Почему в машинном коде вывода gcc есть инструкции nop

StackOverflow https://stackoverflow.com/questions/5901827

  •  29-10-2019
  •  | 
  •  

Вопрос

Каждый раз, когда я выполняю команду objdump -d, я всегда вижу код asm с пакетами инструкций nop (инструкций, которые ничего не делают)

Например, возьмем ту же программу:

родовое слово

У objdump для экзамена есть 2 nops в конце точки входа

родовое слово

И это лишь один из многих примеров, но вы уловили идею.Почему код C скомпилирован таким образом?Заранее спасибо.

Это было полезно?

Решение

Очень часто они используются просто для заполнения, так что последующий материал снова начинается со слова или границы, поскольку доступ к произвольному коду, который не выровнен по границам слова, намного дороже для процессора.

Другие советы

Общие кодовые коды добавляются для принудительного выравнивания следующей функции по 4-байтовой границе.(обратите внимание, что адрес, следующий за последним сгенерированным кодом тега, будет 40047c, что делится на 4)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top