本文主要是介绍【操作系统】【实例说明】重新认识程序从编译到执行的过程:从C语言代码到一个可执行文件计算机做了什么,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这是学习进程所需要必要的知识,要想知道进程里面包括了什么,有必要对进程的前身有深入的具体的了解。
接下来从一段C代码开始,描述以Linux环境作为编译条件的从代码到执行的过程,包括源代码,中间产生的反汇编内容等:
1.这是一个判断是否为闰年的C代码(符合C99标准):
文件命名为example.c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
char * warning ="Wrong Input!\n";
int global_var = 1;
bool result;
bool leap_year(int year){if((year * 4 == O && year * 100 != 0)1|(year * 400 == 0))result = true; //判断闰年elseresult = false;return result;
}
int main(void){int y;scanf("号d",&y);if(y< 0) { //非法输入printf("* s\n", warning);//打印出错信息return 0;bool r;r = leap_year(y);printf("r =*d\n", r);int * dynmc =(int *)malloc(sizeof(int)* 2);dynmc[0]= y;dynmc[1]= leap_year(dynmc[0]);printf("dynmc[1]=* d\n", dynmc[1]);free(dynmc);return 0;}
2.编译阶段
aarch64 -linux -gun -gcc -o example example.c//编译命令 将.c文件编译成ARMv8架构下可执行的二进制格式。
编译后形成的二进制文件
后文明天再肝。。。
这篇关于【操作系统】【实例说明】重新认识程序从编译到执行的过程:从C语言代码到一个可执行文件计算机做了什么的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!