Выравнивание 8 делает команду inc шагами по 8? - PullRequest
0 голосов
/ 18 февраля 2012

при проверке сборки wget я видел это, которое является началом упаковщика, который я предполагаю:

UPX1:004ED812                 align 8
UPX1:004ED818
UPX1:004ED818 loc_4ED818:                             ; CODE XREF: UPX1:loc_4ED829j
UPX1:004ED818                 mov     al, [esi]
UPX1:004ED81A                 inc     esi
UPX1:004ED81B                 mov     [edi], al
UPX1:004ED81D                 inc     edi

мой вопрос: делает ли align 8 значение inc esi для увеличениякаждая итерация на 8, что означает один байт?

Ответы [ 2 ]

3 голосов
/ 18 февраля 2012

INC увеличивается на 1, иначе ад точно вырвется на свободу.

Более конкретно, я не смог найти достойную документацию для текущего языка ассемблера. Я нашел, однако, эту ссылку . В соответствии с этим директива align просто управляет выравниванием кода операции следующей инструкции в памяти.

В этом много смысла.

1 голос
/ 08 марта 2012

INC R точно такой же, как ADD R, 1.

Команда align 8 делает адрес для INC R кратным 8. Это оптимизация, вставленнаякомпилятор, чтобы гарантировать, что цель перехода или вызова падает в начале строки кэша, и, таким образом, конвейер процессора может быть более эффективно заполнен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...