这是学习进程所需要必要的知识,要想知道进程里面包括了什么,有必要对进程的前身有深入的具体的了解。
接下来从一段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; //判断闰年
else
result = 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架构下可执行的二进制格式。
编译后形成的二进制文件
后文明天再肝。。。