成都网站建设公司哪家好,wordpress3.8.1中文版,中天建设集团好不好,建立网站站点的过程中不正确的是文章目录 目录
文章目录
前言
一、程序编译的过程
二、编译阶段
1.预处理(*.i#xff09;
2.编译(*.s)
3.汇编(*.o)
4.链接
总结 前言 提示#xff1a;使用vs code(gcc编译器)与vs2022来演示c语言的预处理 提示#xff1a;以下是本篇文章正文内容#xff0c;下面… 文章目录 目录
文章目录
前言
一、程序编译的过程
二、编译阶段
1.预处理(*.i
2.编译(*.s)
3.汇编(*.o)
4.链接
总结 前言 提示使用vs code(gcc编译器)与vs2022来演示c语言的预处理 提示以下是本篇文章正文内容下面案例可供参考
一、程序编译的过程 二、编译阶段 以下是使用vscode——gcc编译器 1.预处理(*.i
test.c
#include stdio.h
#include test.h
extern int add(int x,int y);
int main()
{//代码int x10;int y20;int sum add(x,y);printf(%d,sum);return 0;
}
test.h
typedef struct test
{int b;char a;
}test1;我们使用指令编译——》 gcc -E test.c -o test.i 会得到一个*.i的文件 过后我们会看见一个test.i的文件 这个就是预处理文件 内容为下 分析 它把test.h和test.c的文件合并在一了并且把注释删除了(还会把#define 宏的符号替换或者删除)【这里没有展现出了你们可以试试看】 总结 是有用可用的保留无用的删除——文本操作 2.编译(*.s) gcc -c test.i 把预编译文件——》编译文件*.s 会得到汇编代码 如下 .file test.c.text.def __main; .scl 2; .type 32; .endef.section .rdata,dr
.LC0:.ascii %d\0.text.globl main.def main; .scl 2; .type 32; .endef.seh_proc main
main:pushq %rbp.seh_pushreg %rbpmovq %rsp, %rbp.seh_setframe %rbp, 0subq $48, %rsp.seh_stackalloc 48.seh_endprologuecall __mainmovl $10, -4(%rbp)movl $20, -8(%rbp)movl -8(%rbp), %edxmovl -4(%rbp), %eaxmovl %eax, %ecxcall addmovl %eax, -12(%rbp)movl -12(%rbp), %eaxmovl %eax, %edxleaq .LC0(%rip), %rcxcall printfmovl $0, %eaxaddq $48, %rsppopq %rbpret.seh_endproc.ident GCC: (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0.def add; .scl 2; .type 32; .endef.def printf; .scl 2; .type 32; .endef分析 把c语言转变为汇编 其中有语法分析语义分析词法分析符号分析等 3.汇编(*.o) gcc -c test.s 把汇编文件变成二进制 4.链接 每一个目标文件由链接器捆绑在一起形成一个可执行的程序。 1.合并段表 2.符号表的合并和符号表的定位 总结