ZHCUCH3A November 2024 – March 2025 F29H850TU , F29H859TU-Q1
表 4-1 总结了所有受支持的寻址模式和各种形式。
| 操作码字段 | 助记符 | 简写 | 地址生成 |
|---|---|---|---|
| 直接寻址 | |||
| DIRM | *(0:#u32imm) | @u32imm | addr = #u32imm |
| 具有 #Immediate 偏移的指针寻址:(Ax = A0 至 A14 2,Az = A4 至 A7) | |||
| DIRM | *(Ax+#u28imm) | *Ax[#u28imm] | addr = Ax + #u28imm(#u28imm = 0 至 256MB 范围) |
| ADDR1 | *(Ax+#u10imm) | *Ax[#u10imm] | addr = Ax + #u10imm(#u10imm = 0 至 1KB 范围) |
| ADDR1 | *(Ax+#u10imm<<2) | *Ax[#u10imm] | addr = Ax + #u10imm<<2(#u10imm << 2 = 0 至 4KB 范围,4B 步长) |
| ADDR3 | *(Ax+#u8imm<<2) | *Ax[#u8imm] | addr = Ax + #u8imm<<2(#u8imm << 2 = 0 至 1KB 范围,4B 步长) |
| ADDR2 | *Az | *Az | addr = Az |
| 具有指针偏移的指针寻址:(Ax = A0 至 A14 2、Aj = A0 至 A14、Ak = A0 至 A3、Az = A4 至 A7) | |||
| ADDR1 | *(Ax+Ak<<#u2imm) | *Ax[Ak] | addr = Ax + Ak << #u2imm(#u2imm = 0、1、2、3) |
| ADDR1 | *(Aj=(Ax+Ak<<#u2imm)) | *Aj=Ax[Ak] | addr = Ax + Ak << #u2imm, Aj = addr(#u2imm = 0、1、2、3) |
| ADDR2 | *(Az+A0<<#scale) | *Az[A0] | addr = Az + A0 << (0/1/2/3) 1 |
| ADDR2 | *(Az+A1<<#scale) | *Az[A1] | addr = Az + A1 << (0/1/2/3) 1 |
| 具有 #Immediate 递增/递减的指针寻址:(Ax = A0 至 A14 2,Az = A4 至 A7) | |||
| ADDR1 | *(Ax++#u8imm) | *Ax++[#u8imm] | addr = Ax, Ax = Ax + #u8imm(#u8imm = 0 至 255 范围) |
| ADDR1 | *(Ax--#n8imm) | *Ax--[#n8imm] | addr = Ax, Ax = Ax - #n8imm(#n8imm = 1 至 256 范围) |
| ADDR1 | *(Ax-=#n8imm) | *Ax-=[#n8imm] | Ax = Ax - #n8imm, addr = Ax(#n8imm = 1 至 256 范围) |
| ADDR2 | *(Az++#size) | *Az++ | addr = Az,Az = Az + (1/2/4/8) (#size = 1,2,4,8) 1 |
| ADDR2 | *(Az--#size) | *Az-- | addr = Az,Az = Az – (1/2/4/8) (#size = 1,2,4,8) 1 |
| ADDR2 | *(Az-=#size) | *--Az | Az = Az – (1/2/4/8),addr = Az (#size = 1,2,4,8) 1 |
| 具有指针递增/递减的指针寻址:(Ax = A0 至 A14 2、Ak = A0 至 A3、Az = A4 至 A7) | |||
| ADDR1 | *(Ax+#u7imm)++Ak | *Ax[#u7imm]++Ak | addr = Ax + #u7imm,Ax = Ax + Ak(#u7imm = 0 至 128) |
| ADDR2 | *(Az++A0) | *Az++A0 | addr = Az,Az = Az + A0 |
| ADDR2 | *(Az++A1) | *Az++A1 | addr = Az,Az = Az + A1 |
| 栈寻址: (A15 = SP) | |||
| ADDR1 | *(A15-#n13imm) | *A15-[#n13imm] | addr = A15 - #n13imm(#n13imm = 1 至 8192) |
| ADDR1 | *(A15++#u8imm) | *A15++[#u8imm] | addr = A15,A15 = A15 + #u8imm(#u8imm = 0 至 255) |
| ADDR1 | *(A15-=#n8imm) | *A15-=[#n8imm] | A15 = A15 - #n8imm,addr = A15(#n8imm = 1 至 256) |