Implement new specification

This commit is contained in:
Joscha 2019-11-10 18:17:21 +00:00
parent 75821abb2c
commit 957f65c380
5 changed files with 55 additions and 25 deletions

View file

@ -12,7 +12,8 @@ module Mima.Word
, wordToBytes
, boolToWord
, largeValueToWord
, signedSmallValueToWord
, signedLargeValueToWord
, signedSmallValueToLargeValue
, wordFromSmallOpcode
, wordFromLargeOpcode
-- ** 'MimaWord' properties
@ -56,9 +57,14 @@ boolToWord True = complement zeroBits
largeValueToWord :: LargeValue -> MimaWord
largeValueToWord = fromIntegral
signedSmallValueToWord :: SmallValue -> MimaWord
signedSmallValueToWord sv
| topBit sv = 0xFF0000 .|. fromIntegral sv
signedLargeValueToWord :: LargeValue -> MimaWord
signedLargeValueToWord lv
| topBit lv = 0xF00000 .|. fromIntegral lv
| otherwise = fromIntegral lv
signedSmallValueToLargeValue :: SmallValue -> LargeValue
signedSmallValueToLargeValue sv
| topBit sv = 0xF0000 .|. fromIntegral sv
| otherwise = fromIntegral sv
wordFromSmallOpcode :: Opcode -> LargeValue -> MimaWord