2

当我使用 gcc - (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0 编译代码时 - 我在编译的代码中发现一些/所有函数末尾或绝对 jmp 之后的一些未使用的代码行。

结果似乎是对齐代码,但是:为什么不简单地使用一些 0 或 NOP?

我找到的未使用的代码行类似于我插入的以下代码行<==

  1. 134d:       eb b7                   jmp    1306 <msb32+0x16>
    134f:       90                      nop    <==
    1350:       b8 ff ff ff ff          mov    $0xffffffff,%eax
    1355:       c3                      retq
    1356:       66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1) <==
    135d:       00 00 00 
    
    0000000000001360 <object_key_compare_serials>:
    1360:       48 8b 07                mov    (%rdi),%rax
    
  2. 12fa:       74 44                   je     1340 <msb32+0x50>
    [...]
    1338:       c3                      retq
    1339:       0f 1f 80 00 00 00 00    nopl   0x0(%rax) <==
    1340:       c1 e7 10                shl    $0x10,%edi
    
4

0 回答 0