Implemented add instruction (only positive integers for now)

This commit is contained in:
Bartłomiej Szostak 2024-04-21 16:23:29 +02:00
parent f929c99b04
commit 000f140e8b
No known key found for this signature in database
GPG Key ID: 562DACF230A18086
3 changed files with 17 additions and 0 deletions

View File

@ -17,4 +17,10 @@ package body Shardware is
Register := Value;
end Mov;
procedure Add (Register : in out Integer; Value : Integer) is
begin
Register := Register + Value;
end Add;
end Shardware;

View File

@ -11,5 +11,6 @@ package Shardware is
function My_Shift (Value : Byte; Amount : Integer) return Integer;
procedure Mov (Register : in out Integer; Value : Integer);
procedure Add (Register : in out Integer; Value : Integer);
end Shardware;

View File

@ -115,11 +115,21 @@ begin
);
when 1 => Mov(Register(Integer(Instruction (2))), -- Move Register to Register
Register(Integer(Instruction (3))));
when 3 => null; -- Move Memory to Register
when 4 => Add(Register(Integer(Instruction (2))), -- Add Int to Register (Only positive values for now)
Integer(My_Shift(Instruction (7), 24)
+ My_Shift(Instruction (8), 16)
+ My_Shift(Instruction (9), 8)
+ Integer(Instruction (10)))
);
when 5 => Add(Register(Integer(Instruction (2))), -- Add Register to Register
Register(Integer(Instruction (3))));
when 65535 => goto THE_END; -- exit opcode
when others => null;
end case;
Put_Line(Integer'Image(Register(0)));
Put_Line(Integer'Image(Register(1)));
PC := PC + 16; -- increment program counter to next instruction
end loop;