首页 > 解决方案 > 比较 x64 汇编中的寄存器值

问题描述

我试图根据程序集注册表中的现有值找出一个谜题。

我一直在这条线上遇到麻烦

cmp    %sil,0x12(%rdi)
jne    ...

当我在调试器中检查它们时,第 12 个偏移量%rdi实际上%sil包含相同的值,但程序仍然会跳转,因为这些值被认为不相等。

我唯一能想到的是,之前的比较是使用cmpb而不是,cmp并且%sil作为 1 字节版本%rsi正在与 8 字节值进行比较。

有人可以告诉我我是否正确地考虑了这一点吗?如果是这样,解决方案的输入是一个字符串,那么我将如何更改输入以适应这个?

标签: assemblyx86-64

解决方案


0x12(%rdi) 

十进制的十六进制表示不是偏移量本身


推荐阅读