指令集
指令集分类
内存寻址
1. 内存地址表示:little endian(高位字节放在高地址)。big endian(高位字节放在低地址)。
2. 寻址模式:
寄存器寻址:add r4, r3值就在reg中。
立即数寻址:add r4, #3值是常量。
偏移量寻址:add r4, 100(r3) 值在内存中,内存地址为r3+100。r3是指针,100是offset。
寄存器间接寻址:add r4, (r3) 值在内存中,内存地址为r3。r3是指针。
间接寻址:add r4, (r3+r2) 值在内存中,内存地址为r3+r2。r3是指针,r2是index。
直接寻址:add r4, (100)又称为绝对寻址。值在内存中,内存地址为常量。用来访问静态数据。
内存间接寻址:add r4, @(r3) 值在内存中,r3保存了指针的指针。value = mem[mem[r3]]。
自动递增寻址:add r4, (r3)+ r3是数组地址,在循环中,每次递增d。
自动递减寻址:add r4, -(r3) 类似。
比例寻址:add r4, 100(r2)[r3] 值在内存中,地址为100+r2+r3*d。访问数组元素,r2是数组地址,r3是index,100是元素内部的offset。
小结:寻址,就是找到 "值" 的位置。寻址模式决定 "值" 保存在哪里,即值的地址如何得到。立即数、寄存器、寄存器间接(间接、偏移量)、内存间接、直接/绝对、等等。
注意:DSP有一些特殊的寻址方式,例如取模寻址。