SPRUIY2 November 2024 F29H850TU , F29H859TU-Q1
Table 5-1 summarizes all supported addressing modes and the various forms.
Opcode Field | Mnemonic | Shorthand | Address Generation |
---|---|---|---|
Direct Addressing | |||
DIRM | *(0:#u32imm) | @u32imm | addr = #u32imm |
Pointer Addressing with #Immediate Offset: (Ax = A0 to A14 2, Az = A4 to A7) | |||
DIRM | *(Ax+#u28imm) | *Ax[#u28imm] | addr = Ax + #u28imm (#u28imm = 0 to 256MB range) |
ADDR1 | *(Ax+#u10imm) | *Ax[#u10imm] | addr = Ax + #u10imm (#u10imm = 0 to 1KB range) |
ADDR1 | *(Ax+#u10imm<<2) | *Ax[#u10imm] | addr = Ax + #u10imm<<2 (#u10imm << 2 = 0 to 4KB range, 4B steps) |
ADDR3 | *(Ax+#u8imm<<2) | *Ax[#u8imm] | addr = Ax + #u8imm<<2 (#u8imm << 2 = 0 to 1KB range, 4B steps) |
ADDR2 | *Az | *Az | addr = Az |
Pointer Addressing with Pointer Offset: (Ax = A0 to A14 2, Aj = A0 to A14, Ak = A0 to A3, Az = A4 to 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 |
Pointer Addressing with #Immediate Increment/Decrement: (Ax = A0 to A14 2, Az = A4 to A7) | |||
ADDR1 | *(Ax++#u8imm) | *Ax++[#u8imm] | addr = Ax, Ax = Ax + #u8imm (#u8imm = 0 to 255 range) |
ADDR1 | *(Ax--#n8imm) | *Ax--[#n8imm] | addr = Ax, Ax = Ax - #n8imm (#n8imm = 1 to 256 range) |
ADDR1 | *(Ax-=#n8imm) | *Ax-=[#n8imm] | Ax = Ax - #n8imm, addr = Ax (#n8imm = 1 to 256 range) |
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 |
Pointer Addressing with Pointer Increment/Decrement: (Ax = A0 to A14 2, Ak = A0 to A3, Az = A4 to A7) | |||
ADDR1 | *(Ax+#u7imm)++Ak | *Ax[#u7imm]++Ak | addr = Ax + #u7imm, Ax = Ax + Ak (#u7imm = 0 to 128) |
ADDR2 | *(Az++A0) | *Az++A0 | addr = Az, Az = Az + A0 |
ADDR2 | *(Az++A1) | *Az++A1 | addr = Az, Az = Az + A1 |
Stack Addressing: (A15 = SP) | |||
ADDR1 | *(A15-#n13imm) | *A15-[#n13imm] | addr = A15 - #n13imm (#n13imm = 1 to 8192) |
ADDR1 | *(A15++#u8imm) | *A15++[#u8imm] | addr = A15, A15 = A15 + #u8imm (#u8imm = 0 to 255) |
ADDR1 | *(A15-=#n8imm) | *A15-=[#n8imm] | A15 = A15 - #n8imm, addr = A15 (#n8imm = 1 to 256) |