汇编中的addr32是什么意思?

发布于 2025-02-13 19:14:31 字数 1005 浏览 1 评论 0原文

我努力弄清楚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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

-黛色若梦 2025-02-20 19:14:31

addr32是前缀67H。没有内存操作数,它对指令没有影响。

在带有内存操作数的说明中,它将地址大小更改为32位。

现在,我不知道为什么在这里使用前缀。它可能是某种填充物,也可能是避免某种微体系错误的错误。

addr32 is the prefix 67h. 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文