1 / 11

Decoding Machine Language 反組譯

Decoding Machine Language 反組譯. Jen-Chang Liu, Spring 200 6 Adapted from http://www-inst.eecs.berkeley.edu/~cs61c/. 6. 5. 5. 5. 5. 6. R. opcode. target address. I. J. opcode. opcode. 6. rs. rs. 5. rt. rt. 5. rd. immediate. shamt. 16. funct. 26. 6. Review.

Télécharger la présentation

Decoding Machine Language 反組譯

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Decoding Machine Language 反組譯 Jen-Chang Liu, Spring 2006 Adapted from http://www-inst.eecs.berkeley.edu/~cs61c/

  2. 6 5 5 5 5 6 R opcode target address I J opcode opcode 6 rs rs 5 rt rt 5 rd immediate shamt 16 funct 26 6 Review • Machine Language Instruction: 32 bits representing a single MIPS instruction

  3. Decoding Machine Language • How do we convert 1s and 0s => assembly code => C code? • 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 and convert each field into the decimal equivalent. • Once we have decimal values, write out MIPS assembly code. • Logically convert this MIPS code into valid C code.

  4. Decoding Example (1/7) • Here are six machine language instructions in hex: 00001025 0005402A 11000003 00441020 20A5FFFF 08100001 • Let the first instruction be at address 4,194,30410 (0x00400000). • Next step: convert to binary

  5. J target address 2 or 3 R 1, 4-31 0 rs rs rt rt rd immediate shamt funct I Decoding Example (2/7) • Here are the six machine language instructions in binary: 0000000000000000000100000010010100000000000001010100000000101010000100010000000000000000000000110000000001000100000100000010000000100000101001011111111111111111 00001000000100000000000000000001 • Next step: identify opcode and format

  6. Decoding 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 fields Format: R R I R I J

  7. 2 1,048,577 0 4 0 0 8 8 0 0 5 2 4 0 0 5 5 2 8 2 -1 +3 0 0 0 42 32 37 Decoding Example (4/7) • Decimal: • Next step: translate to MIPS instructions

  8. Decoding Example (5/7) • MIPS Assembly (Part 1): 0x00400000 or $2,$0,$0 0x00400004 slt $8,$0,$5 0x00400008 beq $8,$0,3 0x0040000c add $2,$2,$4 0x00400010 addi $5,$5,-1 0x00400014 j 0x100001 • Next step: translate to more meaningful instructions (fix the branch/jump and add labels)

  9. Decoding Example (6/7) • MIPS Assembly (Part 2): or $v0,$0,$0 Loop: slt $t0,$0,$a1 beq $t0,$0,Fin add $v0,$v0,$a0 addi $a1,$a1,-1 j Loop Fin: • Next step: translate to C code (be creative!)

  10. Decoding Example (7/7) • C code: • Mapping: $v0: product $a0: mcand $a1: mplier product = 0;while (mplier > 0) { product += mcand; mplier -= 1; }

More Related