相关疑难解决方法(0)

解码C代码的等效汇编代码

想要查看某些C代码的编译器输出(在汇编中),我在C中编写了一个简单的程序,并使用gcc生成了它的汇编文件.

代码是这样的:

#include <stdio.h>  

int main()  
{  
    int i = 0;

    if ( i == 0 )
    {
        printf("testing\n");
    }

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

它的生成程序集在这里(只有主函数):

_main:  
pushl   %ebpz  
movl    %esp, %ebp  
subl    $24, %esp  
andl    $-16, %esp  
movl    $0, %eax  
addl    $15, %eax  
addl    $15, %eax  
shrl    $4, %eax  
sall    $4, %eax  
movl    %eax, -8(%ebp)  
movl    -8(%ebp), %eax  
call    __alloca  
call    ___main  
movl    $0, -4(%ebp)  
cmpl    $0, -4(%ebp)  
jne L2  
movl    $LC0, (%esp)  
call    _printf  
L2:  
movl    $0, %eax  
leave  
ret …
Run Code Online (Sandbox Code Playgroud)

c assembly gcc

2
推荐指数
1
解决办法
3141
查看次数

如何比较 gprof 中的不同优化级别文件

大家,我正在运行 gprof 来检查两个不同优化级别(-g -pg 与 -O3 -pg)下的执行时间百分比。

所以我得到的结果是,一个函数在 O3 中占用了 68% 的 ex-time,但在 -g 版本中只占用了 9%。

我不知道如何找出其背后的原因。我正在考虑在编译之前比较两个版本文件,但我不确定 cmd 是否这样做。

有没有其他方法可以找出这个执行时间差异的原因。

c

2
推荐指数
1
解决办法
2648
查看次数

如何在 C 中将 .o 文件转换回 .c 文件?

我确信有办法。我是 C 语言的新手,我对此的研究毫无结果。有没有可以将 .o 文件转换为 .c 的命令?

c gcc compilation

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

有没有办法在没有GCC组装的情况下编译程序?

可能重复:
使用GCC生成可读组件?

例如,当我尝试:

gcc -c myprogram

它会给我一个目标文件,它是二进制形式.我想得到的只是一个汇编文件(在由汇编程序处理以生成目标文件之前).有没有办法在gcc中做到这一点?

c assembly compilation object-files

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

即时返回函数调用编译为"nop"指令吗?

说我有一个功能:

void foo ( int bar ){
    return;
}
Run Code Online (Sandbox Code Playgroud)

这会编译成nop指令吗?

c c++ assembly compilation

-5
推荐指数
1
解决办法
141
查看次数

标签 统计

c ×5

assembly ×3

compilation ×3

gcc ×2

c++ ×1

object-files ×1