汇编前置

汇编架构

X86 :intel的32位架构
AMD64 :AMD的64位架构
ARM :Acorn的32位架构(由于功耗小,多用于手机与平板)
MIPS :衡量计算机速度的指标(一般用于嵌入式路由器)
IA64 :intel的64位架构
X86-64CPU :简称为X64,兼容64位和32位

risv :精简指令集
cisv :复杂指令集

基础知识

1 byte = 8 bit
1 word = 2 byte
1 KB = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB

总线

  1. 计算机各种功能部件之间通信的线
  2. 分为地址总线、数据总线、控制总线
  3. 传输只能是单向的
  4. 也分为串行和并发

编译型语言与解释型语言

编译型语言:C++、C、C#、go、rust
解释型语言:Python、java、php、javascript

编译过程

预编译:C语言如展开宏
编译:编译成汇编语言
汇编:编译成机器语言
链接:动态链接(从动态库查找,出来的程序较小)和 静态链接(直接编译,出来的程序较大)

gcc 的部分指令

# 预编译后停下来,生成后缀为 .i 的预编译文件
-E

# 编译后停下来,生成后缀为 .o 的目标文件
-c

# 汇编后停下来,生成后缀为 .s 的汇编源文件
-S

## PS:编译整体指令顺序可记为 ESC(键盘左上角的键)
## PS:编译整体后缀顺序可记为 ciso(思科的简称)

# 确定输出文件的名称为 output_filename
-o output_filename

# 强制使用静态链接库
-static

# 产生符号调试工具(GNU的 gdb)所必要的符号信息
-g

# 使用它能够使 gcc 产生尽可能多的警告信息
-Wall

# 链接时装载名为 libname.a 的函数库(如 -lm 表示链接名为 libm.a 的数学函数库)
-lm

CPU

CPU 对存储器的读写

若一段二进制信息 1000100111O11000

它在地址总线上就是 89D8H
它在控制总线上就是 MOV AX,BX

小结


存储器芯片

从读写属性上看分为两类:

  1. 随机存储器(RAM),如主存
  2. 只读存储器(ROM)

X86的内存地址空间

上图是 X86的内存地址空间,以后学习汇编也以 X86为案例去学习

喜欢划水摸鱼的废人
原文地址:https://www.cnblogs.com/CourserLi/p/15312363.html