From 85142325133c43b4f66e4f122868eed9bc890288 Mon Sep 17 00:00:00 2001 From: Ilya Rezvov Date: Tue, 10 Apr 2018 19:48:02 -0700 Subject: [PATCH] fix offset parsing and one byte loading instruction --- src/Language/Wasm/Interpreter.hs | 2 +- src/Language/Wasm/Structure.hs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Language/Wasm/Interpreter.hs b/src/Language/Wasm/Interpreter.hs index 4c3fdef..9da393c 100644 --- a/src/Language/Wasm/Interpreter.hs +++ b/src/Language/Wasm/Interpreter.hs @@ -649,7 +649,7 @@ eval store FunctionInstance { funcType, moduleInstance, code = Function { localT MemoryInstance { memory } <- readIORef $ memInstances store ! (memaddrs moduleInstance ! 0) let addr = fromIntegral $ v + fromIntegral offset byte <- IOVector.read memory addr - let val = asWord32 $ if byte >= 128 then -1 * fromIntegral (v .&. 0x7F) else fromIntegral v + let val = asWord32 $ if byte >= 128 then -1 * fromIntegral (byte .&. 0x7F) else fromIntegral byte return $ Done ctx { stack = VI32 val : rest } step ctx@EvalCtx{ stack = (VI32 v:rest) } (I32Load16U MemArg { offset }) = do MemoryInstance { memory } <- readIORef $ memInstances store ! (memaddrs moduleInstance ! 0) diff --git a/src/Language/Wasm/Structure.hs b/src/Language/Wasm/Structure.hs index 3e7727f..14f81ca 100644 --- a/src/Language/Wasm/Structure.hs +++ b/src/Language/Wasm/Structure.hs @@ -75,7 +75,7 @@ data FBinOp = FAdd | FSub | FMul | FDiv | FMin | FMax | FCopySign deriving (Show data FRelOp = FEq | FNe | FLt | FGt | FLe | FGe deriving (Show, Eq) -data MemArg = MemArg { align :: Natural, offset :: Natural } deriving (Show, Eq) +data MemArg = MemArg { offset :: Natural, align :: Natural } deriving (Show, Eq) type LabelIndex = Natural type FuncIndex = Natural