小编Jar*_*ash的帖子

为什么gcc会生成详细的汇编代码?

我对GCC生成的汇编代码有疑问(-S选项).因为,我是汇编语言的新手并且对它知之甚少,这个问题将是非常原始的.不过,我希望有人会回答:

假设,我有这个C代码:

main(){

    int x = 15; 

    int y = 6;

    int z = x - y;


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我们查看汇编代码(特别是对应于int z = x - y的部分),我们会看到:

主要:

...
subl    $16, %esp
movl    $15, -4(%ebp)
movl    $6, -8(%ebp)
movl    -8(%ebp), %eax
movl    -4(%ebp), %edx
movl    %edx, %ecx
subl    %eax, %ecx
movl    %ecx, %eax
movl    %eax, -12(%ebp)
...
Run Code Online (Sandbox Code Playgroud)

为什么GCC不能生成类似这样的东西,这样可以减少复制内容.

主要:

...
movl    $15, -4(%ebp)
movl    $6, -8(%ebp)
movl    -8(%ebp), %edx          
movl    -4(%ebp), %eax          
subl    %edx, %eax              
movl    %eax, -12(%ebp)
...
Run Code Online (Sandbox Code Playgroud)

PS

Linux …

linux assembly gcc

3
推荐指数
1
解决办法
2188
查看次数

标签 统计

assembly ×1

gcc ×1

linux ×1