mitsubishi m16c instruction set architecturejmconrad/ecgr4101common/notes... · language...
TRANSCRIPT
![Page 1: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/1.jpg)
Mitsubishi M16C Instruction Set Architecture
2-1Embedded Systems
Lecture 2
![Page 2: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/2.jpg)
Today
Learn about Mitsubishi (Renesas) processor– Lecture covers ISA, derived from Assembler
Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2)
• Registers: General Purpose, Control• Instruction Set
Embedded Systems 2-2
• Instruction Set • Addressing Modes• Memory Map
![Page 3: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/3.jpg)
Reading for Next Week
Software Manual (M16C_Software_Manual.pdf): pp.1-32– Use chapter 3 as a reference. You are responsible for
this material – not memorizing it, but instead being able to figure out what an instruction does, or finding an instruction to do something
Embedded Systems 2-3
Data Sheet (M16C62_Hardware_Manual_rev1.20.pdf)– pp. 1-27
![Page 4: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/4.jpg)
Simple Memory Organization
k x m array of stored bits (k is usually 2n)Address
– unique (n-bit) identifier of location
Contents– m-bit value stored in location
000000010010001101000101
00101101
Embedded Systems 2-4
Basic Operations:LOAD
– read a value from a memory location
STORE– write a value to a memory location
••••••••••••
01010110
110111101111
10100010
![Page 5: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/5.jpg)
Simple Memory Organization
Viewed as a large, single-dimensional arrayA memory address is an index into the array"Byte addressing" means that the index points to a byte of
memory
0 8 bits of data
Embedded Systems
0
1
2
3
4
5
6
...
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
![Page 6: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/6.jpg)
Memory Organization
Bytes are nice, but most data items use larger "words"– For M30626, a word is 16 bits or 2 bytes.
0
2
4
6
16 bits of data
16 bits of data
16 bits of data
16 bits of data
(registers also hold 16 bits of data)
Embedded Systems
216 bytes with byte addresses from 0, 1, 2 to 216-1215 words with byte addresses 0, 2, 4, ... 216-2
...
![Page 7: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/7.jpg)
Endianness
Big endian: most significant byte is stored at the lowest byte address
� Ex: 68000, PowerPC, Sun SPARC
12345678ABCDEF
0123456
BOTH store:word 12345678 is at
� Little endian : least significant byte is stored at the lowest address
� Ex: x86, DEC VAX, Alpha
12345678
CDEF01
0123456
Embedded Systems
CDEF01
567
word 12345678 is atlocation 0,word ABCDEF01 is atlocation 4
ABCDEF5
67
� Most of the time we will avoid this issue in class by only loading/storing words or loading/storing bytes
� If two processors with different conventions use a local area network, a disk drive, etc., YOU need to pay attent ion to endianness
![Page 8: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/8.jpg)
Big Endian-What does it look like?
Imagine you have the following hexadecimal values:– 0x11 22 33 44
– 0x55 66 77 88
– 0xAA BB CC DD
– 0xEE FF 00 99
– 0x01 23 45 67 . . . . . .
And we put them in memory, starting at memory addre ss 0x10000000. What would it look like?
Embedded Systems
What would it look like?
0x1000 0000 11 22 33 44 Shown0x1000 0004 55 66 77 88 as0x1000 0008 AA BB CC DD ‘‘Big0x1000 000C EE FF 00 99 Endian’’0x1000 0010 01 23 45 67
0x1000 0014
![Page 9: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/9.jpg)
Little Endian -What does it look like?
Imagine you have the following hexadecimal values:– 0x11 22 33 44
– 0x55 66 77 88
– 0xAA BB CC DD
– 0xEE FF 00 99
– 0x01 23 45 67
And we put them in memory, starting at memory addre ss 0x10000000. What would it look like?
Embedded Systems
What would it look like?
0x1000 0000 44 33 22 11 Shown0x1000 0004 88 77 66 55 as0x1000 0008 DD CC BB AA ‘‘Little0x1000 000C 99 00 FF EE Endian’’0x1000 0010 67 45 23 01
0x1000 0014
![Page 10: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/10.jpg)
Big Endian vs. Little Endian
0x1000 0000 11 22 33 44 Shown0x1000 0004 55 66 77 88 as0x1000 0008 AA BB CC DD ‘‘Big0x1000 000C EE FF 00 99 Endian’’0x1000 0010 01 23 45 67
Embedded Systems
0x1000 0000 44 33 22 11 Shown0x1000 0004 88 77 66 55 as0x1000 0008 DD CC BB AA ‘‘Little0x1000 000C 99 00 FF EE Endian’’0x1000 0010 67 45 23 01
![Page 11: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/11.jpg)
Data Formats for the M30626
Byte– 8 bits– signed & unsigned– .B suffix for instruction
Word– 16 bits– signed & unsigned
Is the M30626 big or little endian?
Embedded Systems 2-11
– signed & unsigned– .W suffix
Address & longword– Limited to
specific instructions
![Page 12: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/12.jpg)
Review of the M30626 Architecture
Microcontroller has:
– General Purpose Registers
– RAM– Flash– EEPROM
Embedded Systems 2-12
– Digital Ports– Analog Ports– Timers– Oscillator– DMA Controller– Reliability
and safety
![Page 13: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/13.jpg)
General Memory Map
Embedded Systems 2-13
![Page 14: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/14.jpg)
Memory Map for QSK62P Plus microcontroller
Embedded Systems 2-14
![Page 15: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/15.jpg)
M16C Registers
4 16-bit data registers R0-R3– Can also access high
and low bytes of R0 and R1: R0H, R0L
– Can also access pairs of registers as 32-bit
Embedded Systems 2-15
of registers as 32-bit registers: R2R0, R3R1
2 16-bit address registers A0 & A1– Can also access pair
of registers as 32-bit register: A1A0
![Page 16: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/16.jpg)
Special Registers
SP: Stack Pointer – for accessing call stack– USP: User code– ISP: Interrupt code
FB: Frame Base – for accessing frame on call stack SB: Static BaseINTB: Interrupt table pointer
Embedded Systems 2-16
INTB: Interrupt table pointer
![Page 17: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/17.jpg)
Addressing Modes
See Ch. 2 of Software Manual for details
Immediate – provide the 8, 16 or 20 bit valueRegister Direct – provide the name of the register
– MOV.B #-29, R0H
Absolute – provide the address of the operand
A
Embedded Systems 2-17
Absolute – provide the address of the operand– MOV.W R3, 213AH– MOV.W 81A8H, R3
81A6H0017H81A8H22AAH81AAH4413H
R1 3210HR2 6001HR3 0150H
R0 2119H
22AAH
22AAH
![Page 18: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/18.jpg)
Address Register Indirect
Address Register Indirect – provide the name of the address register which points to the operand– MOV.W [A0], R3
81A6H0017H81A8H22AAH81AAH4413H
R1 3210HR2
R0 2119H0017H
A
Embedded Systems 2-18
Constraints– Can use address registers A0 and A1
81AAH4413HR2 6001HR3 0150H0017H
A0 81A6HA1 1116H
![Page 19: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/19.jpg)
Address Register Relative
Address Register Relative – as with ARI, but also provide a displacement (offset) from the address register– MOV.W 4[A1], R3
1110H0017H1112H22AAH1114H4413H
R1 3210HR2
R0 2119H
4413H+4
A
Embedded Systems 2-19
Constraints– Can use address registers A0 or A1– Displacement can range from 0 to FFFFH
1114H4413HR2 6001HR3 0150H4413H
4413H
A0 81A6HA1 1110H
![Page 20: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/20.jpg)
Static Base Pointer Relative – as with ARR, but use the SB as the base– MOV.W 2[SB], R3
Static Base Pointer Relative
150EH0017H1510H22AAH1512H4413H
R1 3210HR2
R0 2119H22AAH +2
A
Embedded Systems 2-20
Constraints– Can only use SB– Displacement can range from 0 to FFFFH
1512H4413HR2 6001HR3 0150H22AAH
SB 150EH
![Page 21: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/21.jpg)
0217H
Frame Base/Stack Pointer Relative
Frame Base/Stack Pointer Relative – as with ARR, but use the FB or SP register as the base– MOV.W -6[SP], R3
1514H0017H1516H22AAH
R1 3210HR0 2119H
0217H
-6
150EH1510H229AH1512H7743H
A
Embedded Systems 2-21
Constraints– Can only use FB and SP– Signed displacement can range from 80H to 7FH (-128 to +127)
1516H22AAH1518H4413H
R1 3210HR2 6001HR3 0150H0217H
SP 1514H
![Page 22: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/22.jpg)
Instruction Classes
Data TransferArithmetic and LogicControl TransferOther
Embedded Systems 2-22
![Page 23: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/23.jpg)
Data Transfer Instructions
Not load-store architecture
Embedded Systems 2-23
![Page 24: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/24.jpg)
Arithmetic and Logic Instructions
Embedded Systems 2-24
![Page 25: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/25.jpg)
Control Transfer
Embedded Systems 2-25
![Page 26: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/26.jpg)
Flag Register and Conditions
Embedded Systems 2-26
![Page 27: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/27.jpg)
Conditional Jumps
Assembler Language Programming Manual, Sect. 2.6.1 and jump instruction definitions (p. 80)
Example:CMP.W R1, R2; set cond. flags
Embedded Systems 2-27
; set cond. flags; based on R2-R1JGTU Label2; Jump if R1>R2
![Page 28: Mitsubishi M16C Instruction Set Architecturejmconrad/ECGR4101Common/notes... · Language Programming Manual (M16C_Assembler.pdf MALPM Ch. 1, 2) • Registers: General Purpose, Control](https://reader034.vdocuments.mx/reader034/viewer/2022052103/603d847909eb7969dc52cae0/html5/thumbnails/28.jpg)
Other Instructions
Embedded Systems 2-28