有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 皋陶 于 2021-3-4 15:08 编辑
RiscV汇编介绍(1)-编译过程 RiscV汇编介绍(2)-编译过程
从c/c++源文件,到能够执行文件,须要如下几个步骤:
下面咱们以hello world程序为例,展现整个编译连接过程。
1. 编写hello.c代码
- #include <stdio.h>
- int main(void)
- {
- printf("Hello World!\n");
- return 0;
- }
复制代码
2.使用gcc –E hello.c –o hello.i, 将源文件hello.c文件预处理生成hello.i
3.编译, gcc –S hello.i –o hello.s, 生成汇编程序hello.s,对于x86系统,生成x86汇编代码。
- ction .rodata
- .LC0:
- .string "Hello World!"
- .text
- .globl main
- .type main, @function
- main:
- .LFB0:
- .cfi_startproc
- pushq %rbp
- .cfi_def_cfa_offset 16
- .cfi_offset 6, -16
- movq %rsp, %rbp
- .cfi_def_cfa_register 6
- leaq .LC0(%rip), %rdi
- call puts@PLT
- movl $0, %eax
- popq %rbp
- .cfi_def_cfa 7, 8
- ret
- .cfi_endproc
- .LFE0:
- .size main, .-main
- .ident "GCC: (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0"
- .section .note.GNU-stack,"",@progbits
复制代码
4.汇编 gcc –c hello.s –o hello.o, 生成目标机器码。
5.连接,和系统库文件进行连接,ld hello.o –o hello, 执行会出错,只靠一个hello.o不能生成一个完整的可执行文件。
gcc hello.c –o hello 能够直接生成可执行文件。
完 |