Commit 9a9763f8 authored by 0xrin1's avatar 0xrin1 Committed by norswap

MIPS.sol else statements

parent a1f635f6
...@@ -46,13 +46,12 @@ contract MIPS { ...@@ -46,13 +46,12 @@ contract MIPS {
bytes32 newStateHash = m.WriteMemory(stateHash, addr, value); bytes32 newStateHash = m.WriteMemory(stateHash, addr, value);
require(m.ReadMemory(newStateHash, addr) == value, "memory readback check failed"); require(m.ReadMemory(newStateHash, addr) == value, "memory readback check failed");
return newStateHash; return newStateHash;
} else {
assembly {
// TODO: this is actually doing an SLOAD first
sstore(addr, value)
}
return stateHash;
} }
assembly {
// TODO: this is actually doing an SLOAD first
sstore(addr, value)
}
return stateHash;
} }
function ReadMemory(bytes32 stateHash, uint32 addr) internal returns (uint32 ret) { function ReadMemory(bytes32 stateHash, uint32 addr) internal returns (uint32 ret) {
...@@ -60,10 +59,9 @@ contract MIPS { ...@@ -60,10 +59,9 @@ contract MIPS {
emit TryReadMemory(addr); emit TryReadMemory(addr);
ret = m.ReadMemory(stateHash, addr); ret = m.ReadMemory(stateHash, addr);
//emit DidReadMemory(addr, ret); //emit DidReadMemory(addr, ret);
} else { }
assembly { assembly {
ret := sload(addr) ret := sload(addr)
}
} }
} }
...@@ -191,11 +189,9 @@ contract MIPS { ...@@ -191,11 +189,9 @@ contract MIPS {
if (shouldBranch) { if (shouldBranch) {
return stepPC(stateHash, nextPC, return stepPC(stateHash, nextPC,
pc + 4 + (SE(insn&0xFFFF, 16)<<2)); pc + 4 + (SE(insn&0xFFFF, 16)<<2));
} else {
// branch not taken
return stepPC(stateHash, nextPC, nextPC+4);
} }
// branch not taken
return stepPC(stateHash, nextPC, nextPC+4);
} }
// memory fetch (all I-type) // memory fetch (all I-type)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment