LINUX.ORG.RU

История изменений

Исправление bigbit, (текущая версия) :

Напишу подробнее, т.к. сам только что поисследовал это.

В IA32 инструкция «mov eax, [012345678]» будет представлена байтами A1 78 56 34 12. Последние 4 байта - смещение относительно нуля.

A178563412                     mov         eax, [012345678]

В AMD64 та же самая инструкция «mov eax, [012345678]» будет представлена как 8B 05 72 56 34 12. Последние 4 байта - смещение относительно RIP следующей команды (если RIP текущей команды = 0). А аналогичной формы команды с абсолютным адресом как в IA32, похоже, в 64-битном режиме нет в принципе.

8B0572563412                   mov         eax, [012345678]

Т.е. в AMD64 одна и та же инструкция «mov eax, [012345678]» будет представлена различными байтами, в зависимости от того, по какому смещению RIP она располагается.

Исходная версия bigbit, :

Напишу подробнее, т.к. сам только что поисследовал это.

В IA32 инструкция «mov eax, [012345678]» будет представлена байтами A1 78 56 34 12. Последние 4 байта - смещение относительно нуля.

A178563412                     mov         eax, [012345678]

В AMD64 та же самая инструкция «mov eax, [012345678]» будет представлена как 8B 05 72 56 34 12. Последние 4 байта - смещение относительно RIP следующей команды (если RIP текущей команды = 0). А аналогичной форма команды с асоблютным адресом как в IA32, похоже, в 64-битном режиме нет в принципе.

8B0572563412                   mov         eax, [012345678]

Т.е. в AMD64 одна и та же инструкция «mov eax, [012345678]» будет представлена различными байтами, в зависимости от того, по какому смещению RIP она располагается.