导航:首页 > 文件教程 > gcc怎么编译汇编文件

gcc怎么编译汇编文件

发布时间:2023-01-25 15:51:10

① 如何将C语言代码转换为对应的汇编代码

VC6.0下有两种方法:
(1)增加参数/FA:Project->Setting...,C/C++选项卡中的Project Options中增加参数/FA,编译后debug目录中将会增加对应源文件的汇编文件(*.asm)。
(2)如果想查看C语句对应的汇编代码的话,可以这样:F11单步调试,在debug工具栏中选择“disassembly”即可。每行C代码下面就是对应的汇编代码。
如果debug工具栏不见了,可在VC上方空白菜单处右键,选择“debug”即可弹出debug工具栏。

例如:
C代码程序
int main()
{
int a = 3;
int b = 4;
int c = a + b;
printf("c=%d/n", c);

return 0;
}

对应的汇编代码程序(部分)如下:
5: int a = 3;
00401028 mov dword ptr [ebp-4],3
6: int b = 4;
0040102F mov dword ptr [ebp-8],4
7: int c = a + b;
00401036 mov eax,dword ptr [ebp-4]
00401039 add eax,dword ptr [ebp-8]
0040103C mov dword ptr [ebp-0Ch],eax

gcc下编译加参数-S,如gcc a.c -S,编译后会自动生成汇编文件a.asm。

② 用gcc编译器C语言程序的技巧

方法/步骤
1、编写c代码,并输入以下代码,生成文件hello.c
[root@wahoo
test]#
vim
hello.c
#include
<stdio.h>
#define
DISPLAY
"hello
c!"
int
main(void)
{
printf("%s\n",
DISPLAY
);
return
0;
}
ZZ(说明:ZZ当前文件进行快速保存操作)
2、预编译(Preprocessing)
会对各种预处理指令(#include
#define
#ifdef
等#开始的代码行)进行处理,删除注释和多余的空白字符,生成一份新的代码
[root@wahoo
test]#gcc
-E
hello.c
-o
hello.i
E
参数
通知gcc对目标文件进行预编译,这里是对文件hello.c文件
o
参数
是对命令输出结果进行导入操作,这里是把
gcc
-E
hello.c
操作结果输出到文件hello.i(命名要自定义)中进行保存
这个命令执行完后我们目录下多了一个文件hello.i,你可以查阅一下文件的内容。
3、编译(Compilation)
对代码进行语法、语义分析和错误判断,生成汇编代码文件
[root@wahoo
test]#gcc
-S
hello.i
-o
hello.s
S
参数
通知gcc对目标文件进行编译,这里是对文件hello.i文件
通过这一步我们知道
C语言跟汇编的
关系,至于他们之前是如何进行转换的,大家可以进行更深入的学习与探讨。
此时目录下多了一个hello.s文件,内容如图
4、汇编(Assembly)
把汇编代码转换与计算机可认识的二进制文件,要知道计算机只认识0和1呢
[root@wahoo
test]#gcc
-c
hello.s
-o
hello.o
c
参数
通知gcc对目标文件执行指令转换操作
此步骤我们得到文件hello.o
大家也同样打开文件查看一下,这个文件里面几乎没几个字符大家能看懂,这就对了,但大家可以通过这种方法将其转化为我们可读的形式:
[root@wahoo
test]#readelf
-a
hello.o
5、链接(Linking/Build)
通俗的讲就是把多个*.o文件合并成一个可执行文件,二进制指令文件
[root@wahoo
test]#gcc
hello.o
-o
hello
这里我们就得到了一个可以直接在系统下执行的文件
hello
我们也可以对这个文件进行readelf操作,也可以进行二进制指令转汇编的操作
[root@wahoo
test]#objmp
-d
hello
6、程序运行
[root@wahoo
test]#./hello
hello
c!
7、总结:gcc
编译c程序的主要过程包括
预编译->编译->汇编->连接
四个过程,每个过程都分别进行不同的处理,了解了这其中的一些原理,对c编程的理解大有益处

③ 请问linux下,gcc编译程序的过程(从读取源文件到制作可执行程序中间所有过程,越详细越好)

gcc -S *.c 预处理+反汇编

④ GCC如何编译一个汇编文件,得到可执行文件

gcc -c my.s(生成my.o)
gcc -o my my.o
my就是所要的可执行文件
或者直接可以gcc -o my my.s

阅读全文

与gcc怎么编译汇编文件相关的资料

热点内容
苹果手机有photoshop吗 浏览:120
压缩文件下载后怎么找位置 浏览:664
一汽大众app修改密码在哪里 浏览:153
如何开展数据化分析 浏览:846
宝宝故事动画app 浏览:820
iphone无法访问文档 浏览:772
哪里可以查询上市公司财报数据 浏览:751
加工中心圆周铣孔如何手动编程 浏览:308
诛仙飞升135后怎么升级 浏览:419
2016cad输入要附着的图像文件名 浏览:688
c调用linux 浏览:194
荣耀运动数据如何导入行者 浏览:995
iphone6介绍 浏览:578
aspnet输出json 浏览:431
ward文件怎么用图片覆盖文字 浏览:427
qq头像女生古风伤感图片 浏览:781
买床单去哪个网站 浏览:348
沈阳哪里有网络编程学校 浏览:196
证婚文件夹 浏览:37
一般正常文件格式字体是多少号 浏览:320

友情链接