type int pile_a = { mutable pointeur : int ; mutable suite : int array };; let estvide p = ( p.pointeur = 0 ) ;; let empiler x = if pointeurs.(0) <> ( ( Array.length pile_a ) - 1 ) then ( pointeurs.(0) <- pointeurs.(0)+1 ; pile_a.(pointeurs.(0)) <- x ) ; pile_a else let tmp = Array.create ( Array.length pile_a ) 0 in c = Array.append pile_a tmp ; c;; let depiler a = if estvide = false then pointeurs.(0) <- pointeurs.(0) - a else print_string("on ne peut pas dépiler une pile vide");; let afficher p = for i=0 to pointeurs.(0) do print_int p.(i) ; print_newline() done ;; type instr_asm = CONST of int | ADD | SUB | MUL | DIV | EQU | NEQ | ALLOC of int | FREE of int | LOAD of int | STORE of int | PUSH | JNZ | JMP of int | CALL of int | RET | STOP ;; let executer instr = match instr with CONST a -> empiler a | ADD -> if pointeurs.(0) > 0 then let tmp = pile_a.(pointeurs.(0)) + pile_a.(pointeurs.(0)-1) in depiler 2 ; add tmp ; 1 else -1 |_ -> 2 ;;