Implemented Subtraction, Multiplication and Division

This commit is contained in:
Bartłomiej Szostak 2024-05-02 15:36:37 +02:00
parent 0afa446b9b
commit 2585629c25
No known key found for this signature in database
GPG Key ID: 562DACF230A18086

View File

@ -127,18 +127,54 @@ begin
when 9 => MovF(RegisterF(Integer(Instruction (2))), -- Move Register to Register (Float)
RegisterF(Integer(Instruction (3))));
when 10 => null; -- TODO: Move Memory to Register (Float)
when 11 => AddU(RegisterU(Integer(Instruction (2))), -- Add Unsigned_32 to Register
when 11 => AddU(RegisterU(Integer(Instruction (2))), -- Add Register to Unsigned_32
BytesToU(TempBytes(Instruction)));
when 12 => AddU(RegisterU(Integer(Instruction (2))), -- Add Register to Register (Unsigned_32)
RegisterU(Integer(Instruction (3))));
when 13 => AddI(RegisterI(Integer(Instruction (2))), -- Add Int to Register
when 13 => AddI(RegisterI(Integer(Instruction (2))), -- Add Register to Integer
BytesToI(TempBytes(Instruction)));
when 14 => AddI(RegisterI(Integer(Instruction (2))), -- Add Register to Register (Int)
RegisterI(Integer(Instruction (3))));
when 15 => AddF(RegisterF(Integer(Instruction (2))), -- Add Float to Register
when 15 => AddF(RegisterF(Integer(Instruction (2))), -- Add Register to Float
BytesToF(TempBytes(Instruction)));
when 16 => AddF(RegisterF(Integer(Instruction (2))), -- Add Register to Register (Float)
RegisterF(Integer(Instruction (3))));
when 17 => SubU(RegisterU(Integer(Instruction(2))), -- Subtract Unsigned_32 from Register
BytesToU(TempBytes(Instruction)));
when 18 => SubU(RegisterU(Integer(Instruction(2))), -- Subtract Register from Register (Unsigned_32)
RegisterU(Integer(Instruction (3))));
when 19 => SubI(RegisterI(Integer(Instruction(2))), -- Subtract Integer from Register
BytesToI(TempBytes(Instruction)));
when 20 => SubI(RegisterI(Integer(Instruction(2))), -- Subtract Register from Register (Int)
RegisterI(Integer(Instruction (3))));
when 21 => SubF(RegisterF(Integer(Instruction(2))), -- Subtract Float from Register
BytesToF(TempBytes(Instruction)));
when 22 => SubF(RegisterF(Integer(Instruction(2))), -- Subtract Register from Register (Float)
RegisterF(Integer(Instruction (3))));
when 23 => MulU(RegisterU(Integer(Instruction(2))), -- Multiply Register by Unsigned_32
BytesToU(TempBytes(Instruction)));
when 24 => MulU(RegisterU(Integer(Instruction(2))), -- Multiply Register by Register (Unsigned_32)
RegisterU(Integer(Instruction (3))));
when 25 => MulI(RegisterI(Integer(Instruction(2))), -- Multiply Register by Integer
BytesToI(TempBytes(Instruction)));
when 26 => MulI(RegisterI(Integer(Instruction(2))), -- Multiply Register by Register (Int)
RegisterI(Integer(Instruction (3))));
when 27 => MulF(RegisterF(Integer(Instruction(2))), -- Multiply Register by Float
BytesToF(TempBytes(Instruction)));
when 28 => MulF(RegisterF(Integer(Instruction(2))), -- Multiply Register by Register (Float)
RegisterF(Integer(Instruction (3))));
when 29 => DivU(RegisterU(Integer(Instruction(2))), -- Divide Register by Unsigned_32
BytesToU(TempBytes(Instruction)));
when 30 => DivU(RegisterU(Integer(Instruction(2))), -- Divide Register from Register (Unsigned_32)
RegisterU(Integer(Instruction (3))));
when 31 => DivI(RegisterI(Integer(Instruction(2))), -- Divide Register by Integer
BytesToI(TempBytes(Instruction)));
when 32 => DivI(RegisterI(Integer(Instruction(2))), -- Divide Register by Register (Int)
RegisterI(Integer(Instruction (3))));
when 33 => DivF(RegisterF(Integer(Instruction(2))), -- Divide Register by Float
BytesToF(TempBytes(Instruction)));
when 34 => DivF(RegisterF(Integer(Instruction(2))), -- Divide Register by Register (Float)
RegisterF(Integer(Instruction (3))));
when 65535 => goto THE_END; -- exit opcode
when others => null;
end case;