我的作业有一个问题,如果有人能给我答案,我会很高兴,但更重要的是,如果他们能向我详细解释机器级别发生的情况。
选择您想要的任何平台并描述机器级别发生的情况 调用 func() 时执行以下代码。
如果 foo 被内联,会发生什么变化?
int foo( int a, int* b)
{
return a + *b;
}
extern int x;
void func()
{
int y = 7;
int r;
r = foo( x, &y );
printf("%d\n", r);
}
最佳答案
使用您的编译器。如果您有GCC ,先试试
gcc -S -Wall -fverbose-asm -O0 yourcode.c -o yourcode-O0.s
然后通过优化再次编译,例如
gcc -S -Wall -fverbose-asm -O2 yourcode.c -o yourcode-O2.s
并查看生成的汇编代码:
less yourcode-O0.s
less yourcode-O2.s
您甚至可以查看中间 GCC 表示。将 -fdump-tree-all
添加到上面的编译标志中(注意,您将获得数百个文本“转储”文件)。
关于c - 机器级内存理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24453977/