diff options
author | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-01-10 16:55:37 +0100 |
---|---|---|
committer | Alex AUVOLAT <alex.auvolat@ens.fr> | 2014-01-10 16:55:37 +0100 |
commit | b840059a7f2fb0e3796414f30f1e241d03b44dbf (patch) | |
tree | 78cc779a2b50f0be294f276d1352e5cc2b2fc463 /asm/assembler.ml | |
parent | 9495dd3a9e4aa9e27004ce9718ac39c197db13c0 (diff) | |
download | SystDigit-Projet-b840059a7f2fb0e3796414f30f1e241d03b44dbf.tar.gz SystDigit-Projet-b840059a7f2fb0e3796414f30f1e241d03b44dbf.zip |
Correction de li pour valeurs négatives ; utilisation de labels dans des data.
Diffstat (limited to 'asm/assembler.ml')
-rw-r--r-- | asm/assembler.ml | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/asm/assembler.ml b/asm/assembler.ml index 66999fb..c794c98 100644 --- a/asm/assembler.ml +++ b/asm/assembler.ml @@ -114,7 +114,8 @@ let print_program p = sprintf "liuz %s %s" (rts r) (its i) | Hlt -> (0b01111 lsl 11),"hlt" | Word w -> (byte 16 w), "" - | Byte b -> byte 8 b, "" in + | Byte b -> byte 8 b, "" + | Wlab l -> fst (Imap.find l p.lbls), l in let n = List.fold_left (fun n i -> size i + n) 0 p.text in let rev_lbls = Array.make n "" in Imap.iter (fun l (v,t) -> @@ -131,7 +132,8 @@ let print_program p = else printf "\n"; pc := !pc + 2 ) else ( - printf "%s\n" (bts w) ) in + printf "%s\n" (bts w); + incr pc ) in printf "%d %d\n" (n) 8; List.iter f p.text; printf "\n" |