汇编中的addr32是什么意思?
我努力弄清楚addr32
在汇编代码中的意思是什么。例如,我使用GDB追踪二进制。以下是代码的一部分。
adcx %r13,%r13 #! PC = 0x55555557d9fb
adox %rcx,%r10 #! PC = 0x55555557da01
adcx %r14,%r14 #! PC = 0x55555557da07
addr32 mulx %rdx,%rcx,%rbp #! PC = 0x55555557da0d
mov 0x98(%rsi),%rdx #! EA = L0x7fffffffdc68; Value = 0x0000000000000000; PC = 0x55555557da13
adox %rax,%r11 #! PC = 0x55555557da1a
adcx %r15,%r15 #! PC = 0x55555557da20
adox %rcx,%r12 #! PC = 0x55555557da26
mov $0x20,%rsi #! PC = 0x55555557da2c
adox %rbp,%r13 #! PC = 0x55555557da33
addr32 addr32 mulx %rdx,%rcx,%rax #! PC = 0x55555557da39
LINE4中的addr32
的意思是什么?为什么在最后一行中有双addr32
?
I've tried hard to figure out what addr32
means in assembly code. For example, I use gdb to trace a binary; below is part of the code.
adcx %r13,%r13 #! PC = 0x55555557d9fb
adox %rcx,%r10 #! PC = 0x55555557da01
adcx %r14,%r14 #! PC = 0x55555557da07
addr32 mulx %rdx,%rcx,%rbp #! PC = 0x55555557da0d
mov 0x98(%rsi),%rdx #! EA = L0x7fffffffdc68; Value = 0x0000000000000000; PC = 0x55555557da13
adox %rax,%r11 #! PC = 0x55555557da1a
adcx %r15,%r15 #! PC = 0x55555557da20
adox %rcx,%r12 #! PC = 0x55555557da26
mov $0x20,%rsi #! PC = 0x55555557da2c
adox %rbp,%r13 #! PC = 0x55555557da33
addr32 addr32 mulx %rdx,%rcx,%rax #! PC = 0x55555557da39
What does the addr32
in line4 exactly mean? And why there's a double addr32
in the last line?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
addr32
是前缀67H
。没有内存操作数,它对指令没有影响。在带有内存操作数的说明中,它将地址大小更改为32位。
现在,我不知道为什么在这里使用前缀。它可能是某种填充物,也可能是避免某种微体系错误的错误。
addr32
is the prefix67h
. It does not have an effect on instructions without memory operands.On instructions with memory operands, it changes the address size to 32 bit.
Now as for why the prefix is used here, I don't know. It could be some sort of padding or to avoid some sort of microarchitectural bug.