当我使用 gcc - (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0 编译代码时 - 我在编译的代码中发现一些/所有函数末尾或绝对 jmp 之后的一些未使用的代码行。
结果似乎是对齐代码,但是:为什么不简单地使用一些 0 或 NOP?
我找到的未使用的代码行类似于我插入的以下代码行<==
:
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
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