DOC PREVIEW
Berkeley COMPSCI 61C - Instruction Representation III

This preview shows page 1-2-24-25 out of 25 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 25 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 25 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 25 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 25 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 25 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

PowerPoint PresentationReviewOutlineDecoding Machine LanguageDecoding Example (1/7)Decoding Example (2/7)Decoding Example (3/7)Decoding Example (4/7)Decoding Example (5/7)Decoding Example (6/7)Decoding Example (7/7)Review from before: luiTrue Assembly Language (1/3)Example PseudoinstructionsSlide 16True Assembly Language (2/3)Example PseudoinstructionsSlide 19True Assembly Language (3/3)Questions on PseudoinstructionsRewrite TAL as MALRewrite TAL as MAL (Answer)Peer InstructionPeer Instruction AnswerIn ConclusionCS61C L17 MIPS Instruction Format III (1)Spring 2008 © UCBiPhone games!(and general SDK) Apple is (finally) releasing an iPhone Software Developer Kit on March 6th (?)That means iPhone games that use both touch and accelerometer input!TA Matt Johnsoninst.eecs.berkeley.edu/~cs61c-tminst.eecs.berkeley.edu/~cs61c UC Berkeley CS61C : Machine Structures Lecture 17Instruction Representation III 2008-03-03youtube.com/watch?v=hy0ptZisr70CS61C L17 MIPS Instruction Format III (2)Spring 2008 © UCBReview•MIPS Machine Language Instruction: 32 bits representing a single instruction•Branches use PC-relative addressing, Jumps use absolute addressing.opcode rs rt immediateopcode rs rt rd functshamtRIJtarget addressopcodeCS61C L17 MIPS Instruction Format III (3)Spring 2008 © UCBOutline•Disassembly•Pseudoinstructions•“True” Assembly Language (TAL) vs. “MIPS” Assembly Language (MAL)CS61C L17 MIPS Instruction Format III (4)Spring 2008 © UCBDecoding Machine Language•How do we convert 1s and 0s to assembly language and to C code?Machine language  assembly  C?•For each 32 bits:1. Look at opcode to distinquish between R-Format, J-Format, and I-Format.2. Use instruction format to determine which fields exist. 3. Write out MIPS assembly code, converting each field to name, register number/name, or decimal/hex number.4. Logically convert this MIPS code into valid C code. Always possible? Unique?CS61C L17 MIPS Instruction Format III (5)Spring 2008 © UCBDecoding Example (1/7)•Here are six machine language instructions in hexadecimal:00001025hex0005402Ahex11000003hex00441020hex20A5FFFFhex 08100001hex•Let the first instruction be at address 4,194,304ten (0x00400000hex).•Next step: convert hex to binaryCS61C L17 MIPS Instruction Format III (6)Spring 2008 © UCBDecoding Example (2/7)•The six machine language instructions in binary: 0000000000000000000100000010010100000000000001010100000000101010000100010000000000000000000000110000000001000100000100000010000000100000101001011111111111111111 00001000000100000000000000000001•Next step: identify opcode and format1, 4-62rs rt immediate0 rs rt rd functshamtRIJtarget address2 or 3CS61C L17 MIPS Instruction Format III (7)Spring 2008 © UCBDecoding Example (3/7)•Select the opcode (first 6 bits) to determine the format: 0000000000000000000100000010010100000000000001010100000000101010000100010000000000000000000000110000000001000100000100000010000000100000101001011111111111111111 00001000000100000000000000000001•Look at opcode: 0 means R-Format,2 or 3 mean J-Format, otherwise I-Format.•Next step: separation of fieldsRRIRIJFormat:CS61C L17 MIPS Instruction Format III (8)Spring 2008 © UCBDecoding Example (4/7)•Fields separated based on format/opcode:0 0 0 2 3700 0 5 8 4204 8 0 +30 2 4 2 3208 5 5 -12 1,048,577•Next step: translate (“disassemble”) to MIPS assembly instructionsRRIRIJFormat:CS61C L17 MIPS Instruction Format III (9)Spring 2008 © UCBDecoding Example (5/7)•MIPS Assembly (Part 1):Address: Assembly instructions:0x00400000 or $2,$0,$00x00400004 slt $8,$0,$50x00400008 beq $8,$0,30x0040000c add $2,$2,$40x00400010 addi $5,$5,-10x00400014 j 0x100001•Better solution: translate to more meaningful MIPS instructions (fix the branch/jump and add labels, registers)CS61C L17 MIPS Instruction Format III (10)Spring 2008 © UCBDecoding Example (6/7)•MIPS Assembly (Part 2):or $v0,$0,$0 Loop:slt $t0,$0,$a1 beq $t0,$0,Exit add $v0,$v0,$a0addi $a1,$a1,-1 j LoopExit:•Next step: translate to C code (must be creative!)CS61C L17 MIPS Instruction Format III (11)Spring 2008 © UCBDecoding Example (7/7)•After C code (Mapping below)$v0: product $a0: multiplicand $a1: multiplierproduct = 0;while (multiplier > 0) {product += multiplicand; multiplier -= 1;}Before Hex:00001025hex0005402Ahex11000003hex00441020hex20A5FFFFhex 08100001hexDemonstrated Big 61C Idea: Instructions are just numbers, code is treated like data or $v0,$0,$0Loop: slt $t0,$0,$a1 beq $t0,$0,Exit add $v0,$v0,$a0 addi $a1,$a1,-1 j LoopExit:CS61C L17 MIPS Instruction Format III (13)Spring 2008 © UCBReview from before: lui•So how does lui help us?•Example:addi $t0,$t0, 0xABABCDCDbecomes:lui $at, 0xABABori $at, $at, 0xCDCD add $t0,$t0,$at•Now each I-format instruction has only a 16-bit immediate.•Wouldn’t it be nice if the assembler would this for us automatically? If number too big, then just automatically replace addi with lui, ori, addCS61C L17 MIPS Instruction Format III (14)Spring 2008 © UCBTrue Assembly Language (1/3)•Pseudoinstruction: A MIPS instruction that doesn’t turn directly into a machine language instruction, but into other MIPS instructions•What happens with pseudo-instructions?•They’re broken up by the assembler into several “real” MIPS instructions.• Some examples followCS61C L17 MIPS Instruction Format III (15)Spring 2008 © UCBExample Pseudoinstructions•Register Movemove reg2,reg1Expands to:add reg2,$zero,reg1•Load Immediateli reg,valueIf value fits in 16 bits:addi reg,$zero,valueelse:lui reg,upper 16 bits of valueori reg,$zero,lower 16 bitsCS61C L17 MIPS Instruction Format III (16)Spring 2008 © UCBExample Pseudoinstructions•Load Address: How do we get the address of an instruction or global variable into a register?la reg,labelAgain if value fits in 16 bits:addi reg,$zero,label_valueelse:lui reg,upper 16 bits of valueori reg,$zero,lower 16 bitsCS61C L17 MIPS Instruction Format III (17)Spring 2008 © UCBTrue Assembly Language (2/3)•Problem:•When breaking up a pseudo-instruction, the assembler may need to use an extra register•If it uses any regular register, it’ll overwrite whatever the program has put into it.•Solution:•Reserve a register ($1, called $at for “assembler temporary”) that assembler will use to break up pseudo-instructions.•Since the assembler may use this at any


View Full Document

Berkeley COMPSCI 61C - 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
Download Instruction Representation III
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view 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 Instruction Representation III 2 2 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?