Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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 英特尔64位,奇怪的RSP行为_Assembly_X86 64_Callstack_Ida - Fatal编程技术网

Assembly 英特尔64位,奇怪的RSP行为

Assembly 英特尔64位,奇怪的RSP行为,assembly,x86-64,callstack,ida,Assembly,X86 64,Callstack,Ida,我在Windows中使用IDA调试64位二进制文件时遇到了一个问题。通常,推压后,RSP值应减去8。但偶尔,我从IDA那里看到RSP只扣除2,然后再扣除8 涉及的代码是 push rax push rbx push rsi push rdi 我对x64环境非常陌生,因此有人能解释这种行为吗?您可能被十六进制搞混了。按8点计数 0 8 10 18 20 28 30 你是不是在看这个然后想10-8==2?因为它是0x10-0x8==0x8,所以它不应该是2,除非代码使用16位推送(这

我在Windows中使用IDA调试64位二进制文件时遇到了一个问题。通常,推压后,RSP值应减去8。但偶尔,我从IDA那里看到RSP只扣除2,然后再扣除8

涉及的代码是

push rax
push rbx
push rsi
push rdi

我对x64环境非常陌生,因此有人能解释这种行为吗?

您可能被十六进制搞混了。按8点计数

0  8  10  18  20  28  30

你是不是在看这个然后想
10-8==2
?因为它是
0x10-0x8==0x8

,所以它不应该是2,除非代码使用16位推送(这是不正常的)。Show the instruction and before-after.downvted:不包括详细信息(例如在特定指令上具有before/after值的调试器的实际文本转储)。@Jester:不,包的所有部分:)我偶尔会发现自己犯了一两秒钟这个错误,足以记住它曾经发生过。不过,我在键入评论时花了几分钟才想到这一点:P