龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > 汇编开发 >

编译

时间:2011-05-21 16:24来源:未知 作者:admin 点击:
分享到:
input (键盘)--> 硬盘 --> ./a.out(事先编译好,起始地址) --> 内存 --> cpu去内存中读 --> 指令(操作码,地址码) --> 操作码给控制器 --> 从地址中取值给cpu内部寄存器 --> 运算器做运算 --> 运算结果

input (键盘)--> 硬盘 --> ./a.out(事先编译好,起始地址) -->

内存 --> cpu去内存中读 --> 指令(操作码,地址码) --> 操作码给控制器

--> 从地址中取值给cpu内部寄存器 --> 运算器做运算 --> 运算结果给输出部分;

c关键字:

1.基本数据类型:

char double float int long short void

2.构造数据类型:

enum struct union

3.修饰数据类型:

auto const extern register signed static unsigned volatile

4.自定义类型

typedef

4.控制语句:

break case continue do else goto for if switch while default

5.其他:

return sizeof

gcc hello.c ==> a.out (可执行文件)

cc hello.c ==> a.out

(unix之前的编译器)

make hello ==> cc hello.c -o hello

写程序的步骤:

1. 确定目标; 显示一个hello world!

2. 设计程序; 1) printf 2) array 3) char * ...

顺序结构 条件 循环;

3. 编写程序;

io接口: stdio.h printf

入口函数: main

4. 编译程序;

gcc hello.c

1) gcc -E 预处理; 执行预处理命令;

2) gcc -S 编译; .c ==> .s 编成汇编代码;

3) gcc -c 汇编; .s ==> .o 把汇编编成2进制文件;.o不能执行;

4) ld 链接; .o ==> 可执行文件; 可执行;

-lm手动链接 c库是自动链接;

5. 执行; 测试;

6. 调试;

1) 语法错误;

2) 逻辑错误;

3) 警告错误;

7. 维护;

预处理: gcc -E hello.c -o hello.i

^ 生成目标; hello.i

编译: gcc -S hello.i -o hello.s

^ 编译;

汇编: gcc -c hello.s -o hello.o

^ 目标文件; 有elf头的2进制文件;不可执行的;

链接: gcc hello.o -o hello

^ 可执行;

-------------------------------------------------

sizeof(int) : 返回操作数所占的字节数;

^

sizeof(array) :

int i;

sizeof(i);

程序用于管理数据;

c支持的数据类型: 所占字节数; 取决于平台和编译器;

int : c没有规定int是几个字节; 32位平台: 4个字节;

int : 字长; 32 ==> 4个字节; 16平台下2个字节;

char = 1 : char就是一个字符; 一个字节;

short = 2 : c 规定; short <= int; short的size可以等于int; 16平台下2个字节;

long = 4 : c 规定; long >= int; long的size可以等于int; 16平台下4个字节

float = 4

double = 8

long long = 8

long double = 12

long float X

long int ==> long

short int ==> short

unsigned int short char long

不能修饰float double


精彩图集

赞助商链接