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 目的';低于$0x8%rsp';虽然没有要存储的局部变量_Assembly_X86 64_Calling Convention - Fatal编程技术网

Assembly 目的';低于$0x8%rsp';虽然没有要存储的局部变量

Assembly 目的';低于$0x8%rsp';虽然没有要存储的局部变量,assembly,x86-64,calling-convention,Assembly,X86 64,Calling Convention,这是我教科书中的一段代码的反汇编 sub $0x8, %rsp mov $0x0, %eax callq 4006cf <echo> add $0x8, $rsp echo()函数只需通过get()获取一个输入,然后通过put()将其打印出来。我不明白的是第一个命令sub$0x8,%rsp的用途。call\u echo()函数中没有任何本地变量可存储,那么为什么编译器决定在堆栈中释放8字节的空间?查看未优化的代码没有那么大用处。 void call_echo()

这是我教科书中的一段代码的反汇编

sub    $0x8, %rsp
mov    $0x0, %eax
callq  4006cf <echo>
add    $0x8, $rsp

echo()
函数只需通过
get()
获取一个输入,然后通过
put()
将其打印出来。我不明白的是第一个命令
sub$0x8,%rsp
的用途。
call\u echo()
函数中没有任何本地变量可存储,那么为什么编译器决定在堆栈中释放8字节的空间?

查看未优化的代码没有那么大用处。
void call_echo() {
   echo();
}