我的理解是,如果执行void函数无一个return语句,那么%rax仍将存储从先前的非void函数返回的任何内容。
即,如果:
int a(int param){
return param;
}
void b(){
}
int main(){
a(5);
b();
return 1;
}
然后在main完成执行但返回之前,存储在%rax中的值为5。
我的问题是,如果b有一个空的return语句会怎样?也就是说,>
void b(){ return; }
是否清除%rax?还是%rax仍然保留其以前的值?
我的理解是,如果在没有返回语句的情况下执行void函数,则%rax仍将存储从先前的非void函数返回的任何内容。也就是说,如果:int a(int param)...
然后%rax仍将存储从先前的非void函数返回的任何内容。