Программы на языке ассемблера в linux с использованием amd64

Нужно ли мне использовать синтаксис AT&T (GAS) или синтаксис Intel или что-то еще для написания программы на языке ассемблера в Linux с 64-битной архитектурой AMD с использованием NASM? Какой набор инструкций используется для запуска AMD64? Поддерживает ли он инструкции push pop?


person user3264821    schedule 14.10.2014    source источник


Ответы (1)


NASM использует синтаксис Intel. Доступные инструкции можно найти в руководстве AMD: http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2008/10/24594_APM_v3.pdf

person Mika Lammi    schedule 14.10.2014
comment
Можете ли вы предложить учебник для начинающих по изучению языка ассемблера и кода в NASM с использованием INTEL SYNTAX - person user3264821; 14.10.2014
comment
@ user3264821 Это руководство содержит несколько полезных примеров того, как писать программы в Linux и как использовать функции C, поэтому вам не нужно писать все на ассемблере: http://cs.lmu.edu/~ray/notes/nasmexamples/ - person Mika Lammi; 14.10.2014
comment
Я узнал что-то вроде этого: section .text global _start; должен быть объявлен для компоновщика (ld) _start:; указывает точку входа компоновщика mov edx, len; длина сообщения mov ecx, msg; сообщение для записи mov ebx, 1; дескриптор файла ( stdout) mov eax, 4; номер системного вызова (sys_write) int 0x80; вызов ядра mov eax, 1; номер системного вызова (sys_exit) int 0x80; вызов раздела ядра .data msg db 'Hello, world!', 0xa; наш дорогой string len equ $ - msg; длина нашей любимой строки - person user3264821; 14.10.2014
comment
не могли бы вы предложить несколько книг - person user3264821; 14.10.2014