【发布时间】:2019-10-03 12:17:29
【问题描述】:
我一直在研究 C 中的内联汇编以及调用堆栈的工作原理,但我一直无法弄清楚是否可以检索请求函数返回值的变量的地址,从函数内部。
int hypothetical_func(){
/*...
.. some assembly to get the address of 'int a' from the call stack?
...*/
return 5;
}
int main(){
int a = hypothetical_func();
}
这可能吗?
【问题讨论】:
-
没有。 :) 。对不起,这是一个简单的答案。 :) 。唯一的方法是编写代码来分析内存中的二进制文件,并在调用返回后定位其返回值最终被分配的位置。
-
谁说变量还有内存地址?
-
哦,好吧 :( 我确实找到了一些实际上在内存中查找该帧指针的代码,但我敢打赌这需要很长时间,而且还有很多我几乎看不懂的代码. 有人愿意以“不”为官方答案吗?xD
标签: c return-value inline-assembly calling-convention