1 / 18

10/1: Lecture Topics

10/1: Lecture Topics. Conditional branch instructions slides from 9/29 set Unconditional jump instructions Instruction encoding. Unconditional Jump. (Mostly) the same as branch No choice about it; just go to the label How are branch and jump different?

burton
Download Presentation

10/1: Lecture Topics

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. 10/1: Lecture Topics • Conditional branch instructions • slides from 9/29 set • Unconditional jump instructions • Instruction encoding

  2. Unconditional Jump • (Mostly) the same as branch • No choice about it; just go to the label • How are branch and jump different? • we’ll see when we get to instruction encoding

  3. Stored Program • So far, we’ve seen that data comes from memory • It turns out that the program comes from memory also • Each instruction in the program has an address • Von Neumann computer (p. 33)

  4. Program Layout (p. 160) Address 0 Reserved 0x00400000 Program instructions Text 0x10000000 Static data Global variables 0x10008000 Dynamic data and stack 0x7fffffff

  5. Quick Review of Hexadecimal • Humans normally use base 10 numbers • Hexadecimal is base 16 • use 0-9 as normal, then continue on with a, b, c, d, e, f, then: • 10, 11, ... fd, fe, ff, 100, 101, ... ffe, fff • Hex is convenient for 32-bit addresses • Each hex digit comprises 4 binary digits • A 32 bit address takes 8 hex digits • Example: binary 10110011 = 0xb3

  6. The Text Segment • Let’s zoom in on the text segment: • What’s the fib on this slide? 0x00400000 Text 0x10000000 0x00400000 add $t0, $t1, $t2 0x00400004 sub $t0, $t0, $t3 lw $s1, 4($t0) 0x00400008

  7. Jump Register • Now we’re ready for the jr instruction • Syntax: • Effect: jump to the instruction at the address in $t0 jr $t0

  8. Another Look at Labels • Labels are text tags • The assembler translates them into addresses and does search-and-replace loop: add $t0, $t0, $t0 bne $t0, $t1, loop sw $t2, 0($t3)

  9. C Switch (p. 129) switch(k) { case(0): f = i+j; break; case(1): f = g+h; break; case(2): f = g-h; break; case(3): f = i-j; break; }

  10. Idea for implementing switch Table of addresses code for k=0 0 1 code for k=1 2 3 code for k=2 code for k=3

  11. Implementing C switch add $t1, $s5, $s5 add $t1, $t1, $t1 add $t1, $t1, $t4 lw $t0, 0($t1) jr $t0 L0: add $s0, $s3, $s4 j Exit L1: add $s0, $s1, $s2 j Exit L2: sub $s0, $s1, $s2 j Exit L3: sub $s0, $s3, $s4 Exit:

  12. Instruction Encoding • How does the assembler translate each instruction into bits? add $t0, $s1, $s2 assembler 00000010001100100100000000100000

  13. Fields • Split the 32-bit instruction into fields: • op+funct: Which instruction? • rs, rt: Register source operands • rd: Register destination operand 32 bits op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

  14. Encoding an add instruction • Let’s translate: • Opcode for add is 000000 (p. A-55) • The funct for add is 100000 • The code for $t0 is 01000 (p. A-23) • The code for $s1 is 10001 • The code for $s2 is 10010 add $t0, $s1, $s2

  15. Instruction Formats • The 32 bits can be split up more than one way • For add, it was 6-5-5-5-5-6 • This is called R-format • For lw, we use 6-5-5-16 instead • This is called I-format 32 bits op rs rt address 6 bits 5 bits 5 bits 16 bits

  16. Translating into I-format • The opcode for lw is 100011 • The code for $t0 is 01000 • The code for $t1 is 01001 • Binary for 100 is lw $t0, 100($t1)

  17. Branch vs. Jump • Branch instructions use the I-format • The destination address is 16 bits • You can only branch ±32KB away • Jump instructions use another format called the J-format • The destination address is 26 bits • You can jump up to ±32MB away • What’s the tradeoff?

  18. What to Take Away • I don’t care if you: • Know how many bits are in each field • Know what the opcodes are • Know what the codes for the registers are • I do care that you: • Know what fields are • Know why we need more than one instruction format

More Related