Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 比较x64程序集中的寄存器值_Assembly_X86 64 - Fatal编程技术网

Assembly 比较x64程序集中的寄存器值

Assembly 比较x64程序集中的寄存器值,assembly,x86-64,Assembly,X86 64,我试图根据程序集注册表中的现有值来解决一个难题 我一直在这条线上遇到麻烦 cmp %sil,0x12(%rdi) jne ... 当我在调试器中检查它们时,%rdi和%sil的第12个偏移量实际上包含相同的值,但程序仍然会跳转,因为这些值被认为不相等 我能想到的唯一一件事是,之前的比较使用的是cmpb而不是cmp,并且%sil是%rsi的1字节版本,正在与8字节值进行比较 有人能告诉我,我的想法是否正确吗?如果是这样,解决方案的输入是一个字符串,那么如何更改输入以适应此情况 0x1

我试图根据程序集注册表中的现有值来解决一个难题

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

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

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

有人能告诉我,我的想法是否正确吗?如果是这样,解决方案的输入是一个字符串,那么如何更改输入以适应此情况

0x12(%rdi) 

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

0x12
(十六进制)不是12(十进制)。这是
(%rdi)
之后的第18个字节。这个
cmp
是一个
cmpb
,字节操作数大小由寄存器操作数暗示,因此反汇编程序省略了它。我明白了。非常感谢。