gcc -g选项产生的.s文件,hello.c对应的,很有参考价值!!!

.file    "hello.c"

gcc_compiled.:

.text

LC0:

.ascii "Hello, world!\12\0"

.align 2

.globl _main

_main:

pushl %ebp

movl %esp,%ebp

pushl $LC0

call _printf

xorl %eax,%eax

jmp L1

.align 2

L1:

leave

ret

下面的是带-g选项产生的hello.s

.file    "hello.c"

gcc_compiled.:

.stabs "hello.c",100,0,0,Ltext

Ltext:

.stabs "int:t1=r1;-2147483648;2147483647;",128,0,0,0

.stabs "char:t2=r2;0;127;",128,0,0,0

.stabs "long int:t3=r1;-2147483648;2147483647;",128,0,0,0

.stabs "unsigned int:t4=r1;0;-1;",128,0,0,0

.stabs "long unsigned int:t5=r1;0;-1;",128,0,0,0

.stabs "short int:t6=r1;-32768;32767;",128,0,0,0

.stabs "long long int:t7=r1;0;-1;",128,0,0,0

.stabs "short unsigned int:t8=r1;0;65535;",128,0,0,0

.stabs "long long unsigned int:t9=r1;0;-1;",128,0,0,0

.stabs "signed char:t10=r1;-128;127;",128,0,0,0

.stabs "unsigned char:t11=r1;0;255;",128,0,0,0

.stabs "float:t12=r1;4;0;",128,0,0,0

.stabs "double:t13=r1;8;0;",128,0,0,0

.stabs "long double:t14=r1;8;0;",128,0,0,0

.stabs "void:t15=15",128,0,0,0

.stabs "fpos_t:t3",128,0,0,0

.stabs "size_t:t4",128,0,0,0

.stabs "__stdiobuf_t:t2",128,0,0,0

.stabs "__stdiosize_t:t4",128,0,0,0

.stabs "__iobuf:T16=s44__rptr:17=*2,0,32;__rend:17,32,32;\\",128,0,0,0

.stabs "__wptr:17,64,32;__wend:17,96,32;__base:17,128,32;\\",128,0,0,0

.stabs "__bufsiz:4,160,32;__flag:6,192,16;__file:2,208,8;\\",128,0,0,0

.stabs "__buf:2,216,8;__filbuf:18=*19=f1,224,32;__flsbuf:20=*21=f1,256,32;\\",128,0,0,0

.stabs "__flush:18,288,32;__next:22=*16,320,32;;",128,0,0,0

.stabs "FILE:t16",128,0,0,0

.text

LC0:

.ascii "Hello, world!\12\0"

.align 2

.globl _main

_main:

.stabd 68,0,4

pushl %ebp

movl %esp,%ebp

.stabd 68,0,5

pushl $LC0

call _printf

.stabd 68,0,6

xorl %eax,%eax

jmp L1

.align 2

.stabd 68,0,7

L1:

leave

ret

.stabs "main:F1",36,0,0,_main

时间: 2024-10-23 20:05:38

gcc -g选项产生的.s文件,hello.c对应的,很有参考价值!!!的相关文章

学习记录:gcc/g++ 编译与链接

gcc/g++ 编译与链接 编译与链接的过程可以分解为四个步骤:预处理.编译.汇编.链接 预处理:源代码文件和相关的头文件,被预处理器cpp预处理成一个后缀为 .i 的文件(选项:-E) 编译:把预处理完的文件进行一系列的词法分析.语法分析.语义分析以及优化后,产生相应的汇编代码文件,后缀为 .s,(选项 :-S ) 汇编:把编译阶段生成的 .s 文件转成二进制目标代码,后缀为.o,(选项:-c) 链接:把每个源代码模块独立地编译,然后按照要将它们"组装"起来.链接的主要内容就是把各个

gcc/g++ 命令的常用选项

gcc/g++ 命令的常用选项格式(选项 解释) -o FILE 指定输出文件名,在编译为目标代码时,这一选项不是必须的.如果FILE没有指定,缺省文件名是a.out. -c 只编译生成目标文件,不链接 -m486 针对 486 进行代码优化. -O0 不进行优化处理. -O 或 -O1 优化生成代码. -O2 进一步优化. -O3 比 -O2 更进一步优化,包括 inline 函数. -w 关闭所有警告,建议不要使用此项 -Wall 允许发出gcc能提供的所有有用的警告,也可以用-W(warn

gcc/g++链接时.o文件及库的顺序问题

折腾gcc/g++链接时.o文件及库的顺序问题 链接静态库的顺序问题 GCC 编译使用动态链接库和静态链接库--及先后顺序----及环境变量设置总结

【转】关于编译链接——gcc/g++

添加运行时共享库目录 运行使用共享库的程序需要加载共享库(不同于G++ 编译时指定的链接库),添加共享库的步骤: 修改文件 /etc/ld.so.conf 添加共享库目录 运行 ldconfig 同步更新一下 如: $ gedit /etc/ld.so.conf #添加 /root/dreamlove/lib $ ldconfig 添加include,lib的搜寻路径 对所有用户有效修改/etc/profile 对个人有效则修改~/.bashrc #在PATH中找到可执行文件程序的路径. exp

gcc/g++编译(生动形象,从最容易入手的hello world解释了库的概念)

1. gcc/g++在执行编译工作的时候,总共需要4步 (1).预处理,生成.i的文件[预处理器cpp] (2).将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] (3).有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] (4).连接目标代码,生成可执行程序[链接器ld] [参数详解] -x language filename    设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很

gcc g++支持C++11 标准编译及其区别

g++ -g -Wall -std=c++11 main.cpp gcc -g -Wall -std=c11 main.cpp 如果不想每次写这个-std=C++11这个选项该怎么办呢? 方法出处:http://stackoverflow.com/questions/16886591/how-do-i-enable-c11-in-gcc 方法1:写Makefile 方法2:取别名 :alias g++11="g++ -std=c++11" -----------------------

gcc/g++实战之动态链接库与静态链接库编写

函数库一般分为静态库和动态库两种. 静态库: 是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了.其后缀名一般为”.a”. 动态库: 与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销.动态库一般后缀名为”.so”,gcc/g++在编译时默认使用动态库.无论静态库,还是动态库,都是由.o文件创建的. 动态库的编译: 下面通过一个例子来介绍如何生成一个动态库.建一个头文

再学C/C++ 之 浅析gdb的-g选项

浅析gdb的-g选项 准备 gdb是Linux下学习C/C++最常用的debug工具.要使用这一强大工具,必须在编译时加上-g选项,生成的目标文件才可以用gdb进行调试. 如,先创建一个test.c文件,内容为: 1 #include <stdio.h> 2 3 int main(void){ 4 int a[2]; 5 a[0] = 1; 6 a[1] = 2; 7 return 0; 8 } 使用编译语句,进行编译: gcc -g test.c -o test.out 浅析-g选项 -g选

gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解

摘自http://blog.csdn.net/elfprincexu/article/details/45043971 gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解 C和C++编译器是集成的,编译一般分为四个步骤: 预处理(preprocessing)  ----------------- cpp/ gcc -E  编译(compilation) ------------------ cc1 / gcc -S 汇编(assembly)  ----------------