X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=3a_asm%2FDT.hs;h=b5d297bd703eebc5fae6a70ce98c94ad7a4d215d;hb=b109e17d767479bb16dd6c639058ac73af70878a;hp=562285ba8c2d621e1febecb46f81cb4876218ba0;hpb=cc2df9cbdcbf707446cb56750a1f0615de930a06;p=calu.git diff --git a/3a_asm/DT.hs b/3a_asm/DT.hs index 562285b..b5d297b 100644 --- a/3a_asm/DT.hs +++ b/3a_asm/DT.hs @@ -76,6 +76,9 @@ carry = do { char 'c'; return 1} <|> do {string ""; return 0} updateDisable :: Parser Word32 updateDisable = do { char 'd'; return 1} <|> do {string ""; return 0} +highonly :: Parser Word32 +highonly = do { char 'h'; return 1} <|> do {string ""; return 0} + highlow :: Parser Word32 highlow = do { char 'h'; return 1} <|> do {char 'l'; return 0} <|> do {string ""; return 0} @@ -116,7 +119,8 @@ csv2m dict f = f<$>condition<%>reg<.>(iLit15 dict)<@>reg csv2i_cd dict f = f<$>carry<*>updateDisable<*>condition<%>reg<.>reg<.>(iLit5 dict) csv2i_d dict f = f<$>updateDisable<*>condition<%>reg<.>reg<.>(iLit5 dict) csv2i_scd dict f = f<$>sign<*>carry<*>updateDisable<*>condition<%>reg<.>reg<.>(iLit12 dict) -csv2i_sl dict f = f<$>sign<*>highlow<*>condition<%>reg<.>(iLit16 dict) +csv2i_sl dict f = f<$>highonly<*>sign<*>condition<%>reg<.>(iLit16 dict) +csv2i_sl' dict f = f<$>sign<*>condition<%>reg<.>(iLit16 dict) csv2i_lfd dict f = f<$>highlow<*>fill<*>updateDisable<*>condition<%>reg<.>(iLit16 dict) csv3_cd f = f<$>carry<*>updateDisable<*>condition<%>reg<.>reg<.>reg csv3_d f = f<$>updateDisable<*>condition<%>reg<.>reg<.>reg @@ -126,7 +130,7 @@ instructions = [add, addi, mov, sub, subi, lls, lrs, ars, pop, push, disc, fetch, movpf, movsf, movpt, movst, - ldh, ldb, ldw, ldi, + ldh, ldb, ldw, ldi, ldil, stw, sth, stb, ldx, stx, br, ret, call, reti, @@ -164,6 +168,7 @@ ldw dict = ins "ldw" (csv2m dict) $ mformi 0x0e ldh dict = ins "ldh" (csv2m dict) $ mformi 0x10 ldb dict = ins "ldb" (csv2m dict) $ mformi 0x12 ldi dict = ins "ldi" (csv2i_sl dict) $ lformi' 0x1a +ldil dict = ins "ldil" (csv2i_sl' dict) $ lformi' 0x1a 0 stw dict = ins "stw" (csv2m dict) $ mformi 0x0f sth dict = ins "sth" (csv2m dict) $ mformi 0x11 stb dict = ins "stb" (csv2m dict) $ mformi 0x13 @@ -188,7 +193,7 @@ aformi opcd s c d cond rd ra imm = pack [(cond,28),(opcd,23),(rd,19),(ra,15),(im aformi' opcd s c d cond rd ra = aformi opcd s c d cond rd ra 0 lformi opcd hl f d cond rd imm = pack [(cond,28),(opcd,23),(rd,19),(imm,3),(hl,2),(f,1),(d,0)] -lformi' opcd s hl cond rd imm = lformi opcd s hl 0 cond rd imm +lformi' opcd hl s cond rd imm = lformi opcd s hl 0 cond rd imm lformi'not opcd cond rd = lformi opcd 0 1 0 cond rd 0xefffffff mformi opcd cond rd disp ra = pack [(cond,28),(opcd,23),(rd,19),(ra,15),(disp,0)]