1 / 17

MIPS Assembly

MIPS Assembly. Q uestions. Is it correct to write this instruction? add $s0, $s1, $s2, $s3. Q uestions. Is it correct to write this instruction? add $s0, $ s0, $ s0. Q uestions. Is it correct to write this instruction? lw $s0, 100($s0). Q uestions.

Download Presentation

MIPS Assembly

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. MIPS Assembly

  2. Questions • Is it correct to write this instruction? add $s0, $s1, $s2, $s3

  3. Questions • Is it correct to write this instruction? add $s0, $s0, $s0

  4. Questions • Is it correct to write this instruction? lw$s0, 100($s0)

  5. Questions • Is it correct to write this instruction? lw$s0, $s1($s0)

  6. Questions • Is it correct to write this instruction? add $s0, 100($s1), $s2

  7. Questions • Suppose memory at address 1000 to 1028 are storing 1,2,…,8 (in each 4 bytes). Suppose $t0 is 1000. What will be in $t0 after this instruction? lw $t0, 16($t0)

  8. Exercise • Suppose we have the address of A[i] in $t0, where A is an integer array. Write instructions to swap A[i] and A[i+1].

  9. Memory Processor Address 100 Assume the values are 100 and 101 t1 t0 100 xxxxxxxxxx t2 101 t0+4 lw $t1, 0(t0) lw$t2, 4(t0) sw$t2, 0(t0) sw$t1, 4(t0) Processor Address 100 t1 t0 100 101 t2 101 t0+4 Processor Address 100 t1 t0 101 101 t2 101 t0+4 Processor Address 100 t1 t0 101 101 t2 t0+4 100

  10. Constant or Immediate Operands • Many times we use a constant in an operation • For example, i++, i--, i += 4, and so on • Since constant operands occur frequently, we should include constants inside arithmetic operations so that they are much faster • MIPS has an add instruction that allows one operand to be a constant • The constant must be in 16 bits, as a signed integer in 2’s complement format addi $s1, $s2, 100 # $s1 = $s2 + 100 CDA3100

  11. Logical Operations • Often we need to operate on bit fields within a word. • Which allow us to pack and unpack bits into words and perform logical operations such as logical and, logical or, and logical negation CDA3100

  12. Logical operations • And: • 0 and 0 = 0, 0 and 1 = 0, 1 and 0 = 0, 1 and 1 = 1 • Or: • 0 or 0 = 0, 0 or 1 = 1, 1 or 0 = 1, 1 or 1 = 1 • Xor: • 0 xor0 = 0, 0 xor1 = 1, 1 xor0 = 1, 1 xor1 = 0

  13. Bit-wise AND • Apply AND bit by bit • The resulting bit is 1 if both of the input bits are 1 and zero otherwise • and $t2, $t0, $t1 • There is also a version of AND with an immediate • andi $t2, $t1, 12 • The immediate is treated as an unsigned 16-bit number CDA3100

  14. Bit-wise OR • Apply OR bit by bit • The resulting bit is 1 if at least one of the input bits is 1 and zero otherwise • or $t2, $t0, $t1 • There is also a version of OR with an immediate • ori $t2, $t1, 12 • The immediate is treated as an unsigned 16-bit number CDA3100

  15. Bit-wise XOR • Apply XOR bit by bit • The resulting bit is 1 if two bits are different • xor $t2, $t0, $t1 • There is also a version of OR with an immediate • xori $t2, $t1, 12 • The immediate is treated as an unsigned 16-bit number CDA3100

  16. NOR • Since NOT takes one operand and results in one operand, it is not included in MIPS as an instruction • Because in MIPS each arithmetic operation takes exactly three operands • Instead, NOR is included • The resulting bit is 0 if at least one of the input bits is 1 • nor $t2, $t0, $t1 • How to implement NOT using NOR? • Using $zero as one of the input operands • It is included in MIPS as a pseudoinstruction CDA3100

  17. Questions • With these instructions, how can we load an integer value (like 100) into a register ($t0)?

More Related