介绍
汇编语言,是除了“机器语言” 最底层的语言
很多驱动 嵌入式程序,都是用汇编写的
他是直接工作在“硬件”上的编程语言,所以效率很高
由于机器语言,全都是0和1,过于繁杂。 所以产生了 汇编语言
“汇编指令" 和 “机器指令”, 是一一对应的
比如, 1001100111011000 这个机器指令
他的含义是: 将寄存器bx里的内容 送到 寄存器ax里去
其对应的汇编指令为: MOV ax, bx
机器语言
机器语言/机器指令,是cpu“唯一”可以认定的命令
都是一堆0和1
比如,某个机器指令是: 01010000 他的含义是: push AX(把ax推入堆栈)
这个指令对应的“电平脉冲”: 0为低电平,1为高电平
“电平脉冲”: cpu的工作原理
指令与数据
从二进制的角度看:
在“内存”或“磁盘”里,指令和数据是没有区别的!!!
比如对于一个: 1000100110110 就单纯这个2进制的串
他可能是: 0x89A (即代表一个16进制的“数据”)
也可能是: MOV ax,bx (即代表一个“指令”,代表寄存器内容的复制)
cmd命令
g++ 1.cpp -S -o 1.s
字节
以mov执行为例子, 他有: movb, movw, movl, movq
b: byte 传送的是,一个字节
w: word 传送的是,一个字 (2字节)
l: long word 传送的是,两个字 (4字节)
q: long/char* 四个字 (8字节)
函数参数
void func(long a, long b, long* c){
..}
a参数是在%r