title: Computer Architecture : swapping variables with MIPS
body: <p>I missed the class on this topic because I am out of the country and I haven't been able to get the notes. Could you please lead me in the correct direction with this problem? It has been a while since I used MIPS so it's basically a foreign language to me :D</p>
  
  <p>Homework question : </p>
  
  <p>The MIPS architecture supports byte and halfword (16-bit) memory transfer operations. The instructions are load byte (lb), load byte unsigned (lbu), store byte (sb), load halfword (lh), load halfword unsigned (lhu) and store halfword (sh).</p>
  
  <p>Code:
  char a, b; // 8-bit variables (a @ address 100) (b @ address 200)</p>
  
  <p>Part a) Assuming 8-bit operations are supported (lb, lbu, sb), write a code that swaps the variables.</p>
  
  <p>Part b) If MIPS doesn’t support byte and halfword operations, then we can only use ‘load word’ (lw) and ‘store word’ (sw), which are 32-bit operations. Accordingly, rewrite the code above using only (lw, sw) as memory transfer instructions.</p>
  
  <p>Note : I am really not looking for you to solve it for me, I just don't know what to do. Do I write a swap function in C then convert to MIPS or am I making it overly complicated? Thank you! </p>