|
|
@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
# Notices
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## X86
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* cmovXX (перемещение с условием)
|
|
|
|
|
|
|
|
* setXX (установка бита с условием)
|
|
|
|
|
|
|
|
* аргументы через стек в обратном порядке
|
|
|
|
|
|
|
|
* удаление из стека лежит на вызывающем
|
|
|
|
|
|
|
|
* результат работы - в al, ax, eax (стандартные типы)
|
|
|
|
|
|
|
|
* дробные - в регистрах сопроцессора
|
|
|
|
|
|
|
|
* cdecl (декларация языка Си)
|
|
|
|
|
|
|
|
* push/pop - стек
|
|
|
|
|
|
|
|
* base pointer - для доступа к локальным переменным
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
printf(str, x, y)
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
push L1
|
|
|
|
|
|
|
|
push dword [y]
|
|
|
|
|
|
|
|
push dword [x]
|
|
|
|
|
|
|
|
push str
|
|
|
|
|
|
|
|
call printf
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
after call:
|
|
|
|
|
|
|
|
L1: add esp, 12 ; 3 * 4
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
result in eax register (number of printed arguments)
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
* в стек помещается сначала адрес возврата (адрес, откуда вызвали, плюс длина данной инструкции)
|