|
|
@ -41,14 +41,14 @@ result in eax register (number of printed arguments)
|
|
|
|
* x resb(w/d/q) 1
|
|
|
|
* x resb(w/d/q) 1
|
|
|
|
* В глобальных переменных - нуль (по умолчанию)
|
|
|
|
* В глобальных переменных - нуль (по умолчанию)
|
|
|
|
* section (segment - устар.)
|
|
|
|
* section (segment - устар.)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
.text (код)
|
|
|
|
.text (код)
|
|
|
|
.data (иниц. данные)
|
|
|
|
.data (иниц. данные)
|
|
|
|
.rdata (константы)
|
|
|
|
.rdata (константы)
|
|
|
|
.bss (неиниц. данные)
|
|
|
|
.bss (неиниц. данные)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
* .bss хранится в виде размера (выделяется в момент запуска)
|
|
|
|
* .bss хранится в виде размера (выделяется в момент запуска)
|
|
|
|
```
|
|
|
|
```
|
|
|
|
section .text
|
|
|
|
section .text
|
|
|
|
push
|
|
|
|
push
|
|
|
|
push
|
|
|
|
push
|
|
|
@ -57,11 +57,13 @@ result in eax register (number of printed arguments)
|
|
|
|
str db '%d',0
|
|
|
|
str db '%d',0
|
|
|
|
section .bss
|
|
|
|
section .bss
|
|
|
|
x resd 1
|
|
|
|
x resd 1
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
* global (например, main)
|
|
|
|
* global (например, main)
|
|
|
|
```
|
|
|
|
|
|
|
|
global main
|
|
|
|
```
|
|
|
|
```
|
|
|
|
global main
|
|
|
|
|
|
|
|
```
|
|
|
|
* Добавляет подчеркивания к меткам, _main, например (M$ only)
|
|
|
|
* Добавляет подчеркивания к меткам, _main, например (M$ only)
|
|
|
|
* Вместо линковки вызываем gcc (gcc знает, где стандартная библиотека)
|
|
|
|
* Вместо линковки вызываем gcc (gcc знает, где стандартная библиотека)
|
|
|
|
* Конвенция fastcall (часть аргументов через регистры, 6 регистров для Linux, в прямом порядке, прочее - в стек в обратном)
|
|
|
|
* Конвенция fastcall (часть аргументов через регистры, 6 регистров для Linux, в прямом порядке, прочее - в стек в обратном)
|
|
|
|