【发布时间】:2020-04-17 18:56:46
【问题描述】:
在我从 Agner Fog 的 objconv 收到的报告中,我在 .plt(过程链接表)部分看到了要修复的建议错误,例如:
SECTION .plt align=16 execute ; section number 9, code
?_001: push qword [rel ?_086] ; 10F0 _ FF. 35, 00201F12(rel)
jmp near [rel ?_087] ; 10F6 _ FF. 25, 00201F14(rel)
; Filling space: 4H
; Filler type: Multi-byte NOP
; db 0FH, 1FH, 40H, 00H
ALIGN 8
?_002: jmp near [rel ?_088] ; 1100 _ FF. 25, 00201F12(rel)
; Note: Immediate operand could be made smaller by sign extension
push 0 ; 1106 _ 68, 00000000
; Note: Immediate operand could be made smaller by sign extension
jmp ?_001 ; 110B _ E9, FFFFFFE0
在两种情况下(以及代码中未显示的其他情况),它建议“立即操作数可以通过符号扩展变得更小”。如何访问过程链接表以进行这些更改?是否可以?
【问题讨论】:
-
PLT 由链接器自动生成。我不认为你可以改变这样做的方式。另请注意,这对性能的影响很小。
标签: matplotlib assembly optimization x86-64 nasm