比较x64 Assembly中的寄存器值

问题描述

我试图根据组装注册表中的现有值找出一个难题。

我一直在这行遇到麻烦

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

当我在调试器中检查%rdi%sil的第12个偏移量时,它们确实包含相同的值,但是由于认为值不相等,程序仍会跳转

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

有人可以告诉我我是否在考虑正确吗?如果是这样,则解决方案的输入为字符串,那么如何更改输入以适应此要求?

解决方法

0x12(%rdi) 

是小数的十六进制表示,而不是偏移量本身