import Text.ParserCombinators.Parsec.Language
import System.IO
import Data.Word
+import Data.List
import Data.Bits
lexer :: P.TokenParser ()
else do
printf ""
let base = if "-b" `elem` args then 2 else 16
- let parsed = parseInstr dict formatedsrc
+ let parsed = parseInstr (reverse $ sort dict) formatedsrc
sequence_ [printf "%s" (showsDTFBase x base "") | x <- parsed]
SHELL := zsh
all:
- @ghc --make Main.hs -o dtas
+ @ghc --make Main.hs -O0 -o dtas
+ @strip dtas
.PHONY: clean test
clean:
BUGS:
-- parsers2/eval: aufloesen von zwei labels x und y funktioniert nicht, wenn x ein
- echter prefix von y ist (longest input match anyone?)
- parsers2: bei instr branches addresse durch 4 rechnen (ldi vorm brr -> RAGE)
WUENSCHE:
ldi r10, UART_BASE@lo
ldih r10, UART_BASE@hi
-u_send_by1:
+u_send_byte1:
ldw r9, UART_STATUS(r10)
andx r9, UART_TRANS_EMPTY
- brnz+ u_send_by1 ; branch if not zero
+ brnz+ u_send_byte1 ; branch if not zero
ldis r0, 0x50
stb r0, UART_TRANS(r10)