这只是一个学生学习ASM的笔记,里面的内容不代表是正确的!
学习向导:x86 Assembly Guide
寄存器(Registers)
X86 CPU是拥有8个32位的寄存器,最多支持4GB内存。而到了64位(AMD64),则拥有了16个寄存器,还在32位寄存器上多出了一组64位寄存器(16个)
寄存器的命名,是有规则的
先从EAX,AX等说起
64位处理器下的寄存器图
我的记忆方法:
R开头:64位,E开头:32位,非上者尾有X,16位,有X的一定会是16的倍数,X据说是Pair的意思,代表中有高位,低位之分
P结尾的:Pointer,存指针用的,SP:Stack Pointer缩写,代表存栈指针的(入栈出栈会看到),
H:High缩写,表示高位,L,Low缩写,表示地位
这张图可以很清晰解析EAX与AH, AL关系
另外还有一些常见的缩写
w: Word,字,16位
d: Double Word(或DWORD), 两个字,32位
b: Bytes, 字节,8位
l: long, 64位浮点数或32位int
q: quad, 64位
t: 10 Bytes, 80位
PTR: Pointer缩写,指针的意思
寄存器名词缩写:
A: Accumulator(数学运算)
B: Base
C: Counter (循环之类的)
D: Data (数据储存)
这些都是所谓的General Purpose Register(即通用的寄存器)
然后还有专有的,例如AVX或SSE指令集里面的XMM和YMM
暂无评论