Цитата:
|
о сути ассемблер для х64 отличается тем, что в нем есть qword (и регистры вроде с приставкой "r" - "rax, rbx, rdx...") и еще несколько новых команд, остальное все то же самое.
|
Особо в описание машинных кодов не вчитывался, но если правильно понял, то даже коды команд под x32 оставлены без изменений; все, что относится к x64 (qword'ы, rax, rbx,...) реализовано с помощью префиксов, не существующих в х32. То есть совместимость максимальная: код под х32, запущенный под х64, может и заработать...
Только что проверил - в своей х64 оси использовал х32 код:
Код:
use32
mov eax, 1
mov ebx, eax
cmp eax, ebx
test eax, eax
add ebx, ecx
mov eax, 1024*1024-4
mov [eax], ebx
(не надо пытаться понять смысл, это просто куча команд.

)
Выполнилось без ошибок.
Из того что помню разница в push и pop: push 4 байт заменен на соответствующий push 8 байт.
А вот структура екзешника отличается, насколько я знаю: там указывается битность.