Ассемблер в Linux для программистов C: различия между версиями
Содержимое удалено Содержимое добавлено
→Отладчик GDB: $rip для 64бит |
заметки о 64битной архитектуре |
||
Строка 994:
}
</syntaxhighlight>
Если вы пытаетесь писать код под 64битную архитектуру, то обратите внимание на следующие различия:
* Calling convention. Параметры функции передаются через регистры <code>%rdi</code>, <code>%rsi</code>, ... А значение возвращается через <code>%rax</code>
* Очень важно, чтобы указатель на стек <code>%rsp</code> был выравнен по 16-ти байтам! То есть, чтобы его значение заканчивалось на ноль. Если не заканчивается, то нужно положить что-нибудь в стек. Зачем это делается? Потому что процессор наиболее эффективно читает память по адресам, кратным длине своего слова. Если не выравнять стек, то будет segmentation fault.
*
=== Команды сравнения и условные переходы. Безусловный переход ===
|