working...

This commit is contained in:
Jaka Furlan 2025-11-29 18:00:02 +01:00
parent d836b3955d
commit 0332001ef8
75 changed files with 427 additions and 1081 deletions

View file

@ -0,0 +1,59 @@
(*r2 <- (r2) + (r1)*)
let addr (state : Processor.state) (r1 : int) (r2 : int) : unit =
let valR1 = Processor.read_register_int state r1 in
let valR2 = Processor.read_register_int state r2 in
Processor.write_register_int state r2 (valR1 + valR2)
(*r1 <- 0*)
let clear (state : Processor.state) (r1 : int) : unit =
Processor.write_register_int state r1 0
(*(r1):(r2)*)
let compr (state : Processor.state) (r1 : int) (r2 : int) : unit =
let sw = 9 in
let valR1 = Processor.read_register_int state r1 in
let valR2 = Processor.read_register_int state r2 in
Processor.write_register_int state sw (if valR1 < valR2 then 0 else if valR1 = valR2 then 1 else 2)
(*r2 <- (r2) / (r1)*)
let divr (state : Processor.state) (r1 : int) (r2 : int) : unit =
let valR1 = Processor.read_register_int state r1 in
let valR2 = Processor.read_register_int state r2 in
Processor.write_register_int state r2 (valR2 / valR1)
(*r2 <- (r2) * (r1)*)
let mulr (state : Processor.state) (r1 : int) (r2 : int) : unit =
let valR1 = Processor.read_register_int state r1 in
let valR2 = Processor.read_register_int state r2 in
Processor.write_register_int state r2 (valR2 * valR1)
(*r2 <- (r1)*)
let rmo (state : Processor.state) (r1 : int) (r2 : int) : unit =
let valR1 = Processor.read_register_int state r1 in
Processor.write_register_int state r2 (valR1)
(*r1 <- (r1); left shift n bits. {In assembled instruction, r2 = n-1}*)
let shiftl(state : Processor.state) (r1 : int) (r2 : int) =
let n = r2 + 1 in
let valR1 = Processor.read_register_int state r1 in
Processor.write_register_int state r1 (valR1 lsl n)
(*r1 <- (r1); right shift logical n bits. {In assembled instruction, r2 = n-1}*)
let shiftr(state : Processor.state) (r1 : int) (r2 : int) =
let n = r2 + 1 in
let valR1 = Processor.read_register_int state r1 in
Processor.write_register_int state r1 (valR1 lsr n)
(*r2 <- (r2) - (r1)*)
let subr (state : Processor.state) (r1 : int) (r2 : int) : unit =
let valR1 = Processor.read_register_int state r1 in
let valR2 = Processor.read_register_int state r2 in
Processor.write_register_int state r2 (valR2 - valR1)
(*X <- (X) + 1; (X):(r1)*)
let tixr (state : Processor.state) (r1 : int) : unit =
state.regs.x <- state.regs.x + 1;
let sw = 9 in
let valR1 = Processor.read_register_int state r1 in
let valX = state.regs.x in
Processor.write_register_int state sw (if valX < valR1 then 0 else if valX = valR1 then 1 else 2)