                     let lower = valueToStore.unsignedLower8()
                     let lowest = valueToStore.unsignedLowest8()
                     self.memory[address] = lower
-                    self.memory[address + 8] = lowest
+                    self.memory[address + 1] = lowest
                 case 2:
                     // Storing a word
                     let (highest, higher, lower, lowest) = valueToStore.toBytes()
                     self.memory[address] = highest
-                    self.memory[address + 8] = higher
-                    self.memory[address + 16] = lower
-                    self.memory[address + 24] = lowest
+                    self.memory[address + 1] = higher
+                    self.memory[address + 2] = lower
+                    self.memory[address + 3] = lowest
                 default:
                     // Never reached
                     fatalError("Invalid size of store word: \(size)")

            }
        case let .Memory(storing, size, memReg, offset, addrReg):
            let addrRegValue = self.registers.get(addrReg.name)
            let address = addrRegValue + offset.signExtended*8 // Immediate is offset in bytes
            if address % Int32(1 << size) != 0 {
                print("Unaligned memory reference: \(address.toHexWith0x())")
                // TODO disallow

                    loadedValue = Int32(highest: 0, higher: 0, lower: 0, lowest: self.memory[address] ?? 0)
                case 1:
                    // Loading a half-word
                    loadedValue = Int32(highest: 0, higher: 0, lower: self.memory[address] ?? 0, lowest: self.memory[address + 1] ?? 0)
                case 2:
                    // Loading a word
                    let highest = self.memory[address] ?? 0
                    let higher = self.memory[address + 1] ?? 0
                    let lower = self.memory[address + 2] ?? 0
                    let lowest = self.memory[address + 3] ?? 0
                    loadedValue = Int32(highest: highest, higher: higher, lower: lower, lowest: lowest)
                default:
                    // Never reached
