在void函数中使用空return语句后%rax会发生什么?

问题描述 投票:-1回答:1

我的理解是,如果执行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)...

assembly x86-64 calling-convention
1个回答
0
投票

然后%rax仍将存储从先前的非void函数返回的任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.