3a_asm: FIX: parser fail bei labels aufloesen
authorBernhard Urban <lewurm@gmail.com>
Fri, 14 Jan 2011 01:50:29 +0000 (02:50 +0100)
committerBernhard Urban <lewurm@gmail.com>
Fri, 14 Jan 2011 01:50:29 +0000 (02:50 +0100)
3a_asm/Expr_eval.hs
3a_asm/Main.hs
3a_asm/Makefile
3a_asm/notes
progs/deepjit.s

index 4924950a8161570bf0f887d1a5f47c0b47661d86..71e0f4de63ae06f083fde358ea8a9bb3a64c758f 100644 (file)
@@ -10,6 +10,7 @@ import qualified Text.ParserCombinators.Parsec.Token as P
 import Text.ParserCombinators.Parsec.Language
 import System.IO
 import Data.Word
+import Data.List
 import Data.Bits
 
 lexer :: P.TokenParser ()
index c0de4f412093ebb19a73224ce78a5db14b19007a..40be8f0f7546a6048c28ee2031aa32e1dd51ec3d 100644 (file)
@@ -37,7 +37,7 @@ main = do
                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]
 
 
index 89ef6467590f506a252eef0ce14ca5d483f78923..2f1c87ec36568369d52821b015c77d916e0ccb48 100644 (file)
@@ -1,7 +1,8 @@
 SHELL := zsh
 
 all:
-       @ghc --make Main.hs -o dtas
+       @ghc --make Main.hs -O0 -o dtas
+       @strip dtas
 
 .PHONY: clean test
 clean:
index 07dfe0e23cc580b2f112d2bd57618c1cc7a57680..26ff1ef1d89125e3a008fc97a158959641223239 100644 (file)
@@ -1,6 +1,4 @@
 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:
index c0352d8fbeea06ebc0021dd2001ae90a163f8430..1436b63c6048139336aca09894acb6415eeb58d8 100644 (file)
@@ -185,10 +185,10 @@ u_test:
        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)