Unformatted text preview:

inst eecs berkeley edu cs61c Outline Lecture 17 Introduction to MIPS Instruction Representation III Disassembly CS61C Machine Structures Pseudoinstructions and True Assembly Language TAL v MIPS Assembly Language MAL 2004 10 08 Lecturer PSOE Dan Garcia www cs berkeley edu ddgarcia World Cyber Games 5 day competition held in SF to determine the top video game players in the world Halo Warcraft III FIFA Soccer Counter Strike etc www worldcybergames com CS 61C L17 Introduction to MIPS Instruction Representation III 1 Garcia Fall 2004 UCB CS 61C L17 Introduction to MIPS Instruction Representation III 2 Decoding Machine Language Decoding Example 1 7 How do we convert 1s and 0s to C code Machine language C Here are six machine language instructions in hexadecimal 00001025hex 0005402Ahex 11000003hex 00441020hex 20A5FFFFhex 08100001hex For each 32 bits Look at opcode 0 means R Format 2 or 3 mean J Format otherwise I Format Use instruction type to determine which fields exist Write out MIPS assembly code converting each field to name register number name or decimal hex number Let the first instruction be at address 4 194 304ten 0x00400000hex Next step convert hex to binary Logically convert this MIPS code into valid C code Always possible Unique CS 61C L17 Introduction to MIPS Instruction Representation III 3 Garcia Fall 2004 UCB CS 61C L17 Introduction to MIPS Instruction Representation III 4 Decoding Example 2 7 The six machine language instructions in binary 00000000000000000001000000100101 00000000000001010100000000101010 00010001000000000000000000000011 00000000010001000001000000100000 00100000101001011111111111111111 00001000000100000000000000000001 rs rs rt rd shamt funct rt immediate target address Garcia Fall 2004 UCB Decoding Example 3 7 Select the opcode first 6 bits to determine the format Format R R I R I J Next step identify opcode and format R 0 I 1 4 31 J 2 or 3 Garcia Fall 2004 UCB 00000000000000000001000000100101 00000000000001010100000000101010 00010001000000000000000000000011 00000000010001000001000000100000 00100000101001011111111111111111 00001000000100000000000000000001 Look at opcode 0 means R Format 2 or 3 mean J Format otherwise I Format Next step separation of fields CS 61C L17 Introduction to MIPS Instruction Representation III 5 Garcia Fall 2004 UCB CS 61C L17 Introduction to MIPS Instruction Representation III 6 Garcia Fall 2004 UCB Decoding Example 4 7 Decoding Example 5 7 Fields separated based on format opcode Format 0 0 4 0 8 2 R R I R I J 0 0 8 2 5 0 5 0 4 5 2 8 0 0 3 0 1 2 37 42 32 1 048 577 Next step translate disassemble to MIPS assembly instructions CS 61C L17 Introduction to MIPS Instruction Representation III 7 Garcia Fall 2004 UCB Decoding Example 6 7 MIPS Assembly Part 1 Address Assembly instructions 0x00400000 0x00400004 0x00400008 0x0040000c 0x00400010 0x00400014 or slt beq add addi j 2 0 0 8 0 5 8 0 3 2 2 4 5 5 1 0x100001 Better solution translate to more meaningful MIPS instructions fix the branch jump and add labels registers CS 61C L17 Introduction to MIPS Instruction Representation III 8 Garcia Fall 2004 UCB Decoding Example 7 7 After C code Mapping below Before Hex MIPS Assembly Part 2 Loop Exit or slt beq add addi j 00001025hex 0005402Ahex 11000003hex 00441020hex 20A5FFFFhex 08100001hex v0 0 0 t0 0 a1 t0 0 Exit v0 v0 a0 a1 a1 1 Loop Next step translate to C code be creative CS 61C L17 Introduction to MIPS Instruction Representation III 9 Garcia Fall 2004 UCB Kilo Mega Giga Tera Peta Exa Zetta Yotta physics nist gov cuu Units binary html Common use prefixes all SI except K k in SI Name Abbr Factor or Loop slt beq add addi j Exit v0 product a0 multiplicand a1 multiplier product 0 while multiplier 0 product multiplicand multiplier 1 v0 0 0 t0 0 a1 t0 0 Exit v0 v0 a0 a1 a1 1 Loop Demonstrated Big 61C Idea Instructions are just numbers code is treated like data CS 61C L17 Introduction to MIPS Instruction Representation III 10 kibi mebi gibi tebi pebi exbi zebi yobi en wikipedia org wiki Binary prefix New IEC Standard Prefixes only to exbi officially SI size Name Kilo K 2 10 1 024 10 3 1 000 kibi Ki 2 10 1 024 Mega M 2 20 1 048 576 10 6 1 000 000 mebi Mi 2 20 1 048 576 10 9 Abbr Factor G 2 30 1 000 000 000 gibi Gi 2 30 1 073 741 824 Tera T 2 40 1 099 511 627 776 10 12 1 000 000 000 000 tebi Ti 2 40 1 099 511 627 776 Peta P 2 50 1 125 899 906 842 624 10 15 1 000 000 000 000 000 pebi Pi 2 50 1 125 899 906 842 624 Exa E 2 60 1 152 921 504 606 846 976 10 18 1 000 000 000 000 000 000 exbi Ei 2 60 1 152 921 504 606 846 976 Z 2 70 1 180 591 620 717 411 303 424 10 21 1 000 000 000 000 000 000 000 zebi Zi 2 70 1 180 591 620 717 411 303 424 Y 2 80 1 208 925 819 614 629 174 706 176 10 24 1 000 000 000 000 000 000 000 000 yobi Yi 2 80 1 208 925 819 614 629 174 706 176 Giga Zetta Yotta 1 073 741 824 Confusing Common usage of kilobyte means 1024 bytes but the correct SI value is 1000 bytes Hard Disk manufacturers Telecommunications are the only computing groups that use SI factors so what is advertised as a 30 GB drive will actually only hold about 28 x 230 bytes and a 1 Mbit s connection transfers 10 6 bps CS 61C L17 Introduction to MIPS Instruction Representation III 12 Garcia Fall 2004 UCB Garcia Fall 2004 UCB As of this writing this proposal has yet to gain widespread use International Electrotechnical Commission IEC in 1999 introduced these to specify binary quantities Names come from shortened versions of the original SI prefixes same pronunciation and bi is short for binary but pronounced bee Now SI prefixes only have their base 10 meaning and never have a base 2 meaning CS 61C L17 Introduction to MIPS Instruction Representation III 13 Garcia Fall 2004 UCB Review from before lui So how does lui help us True Assembly Language 1 3 Pseudoinstruction A MIPS instruction that doesn t turn directly into a machine language instruction but into other MIPS instrucitons Example addi becomes lui ori add t0 t0 0xABABCDCD What happens with pseudoinstructions at 0xABAB at at 0xCDCD t0 t0 at Now each I format instruction has only a 16bit immediate Wouldn t it be nice if the assembler would this for us automatically They re broken up by the assembler into several real MIPS instructions But what is a real MIPS instruction Answer in a few slides First some examples If number too big then just automatically replace addi with lui ori add CS 61C L17 Introduction to MIPS Instruction Representation III 14 Garcia Fall 2004 UCB Example Pseudoinstructions Problem move reg2


View Full Document

Berkeley COMPSCI 61C - ntroduction to MIPS Instruction Representation III

Documents in this Course
SIMD II

SIMD II

8 pages

Midterm

Midterm

7 pages

Lecture 7

Lecture 7

31 pages

Caches

Caches

7 pages

Lecture 9

Lecture 9

24 pages

Lecture 1

Lecture 1

28 pages

Lecture 2

Lecture 2

25 pages

VM II

VM II

4 pages

Midterm

Midterm

10 pages

Load more
Loading Unlocking...
Login

Join to view ntroduction to MIPS Instruction Representation III and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view ntroduction to MIPS Instruction Representation III and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?