summaryrefslogtreecommitdiff
path: root/asm/assembler.ml
diff options
context:
space:
mode:
authorAlex AUVOLAT <alex.auvolat@ens.fr>2014-01-10 16:55:37 +0100
committerAlex AUVOLAT <alex.auvolat@ens.fr>2014-01-10 16:55:37 +0100
commitb840059a7f2fb0e3796414f30f1e241d03b44dbf (patch)
tree78cc779a2b50f0be294f276d1352e5cc2b2fc463 /asm/assembler.ml
parent9495dd3a9e4aa9e27004ce9718ac39c197db13c0 (diff)
downloadSystDigit-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.ml6
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"