Implemented add instruction (only positive integers for now)
This commit is contained in:
parent
f929c99b04
commit
000f140e8b
@ -17,4 +17,10 @@ package body Shardware is
|
|||||||
Register := Value;
|
Register := Value;
|
||||||
end Mov;
|
end Mov;
|
||||||
|
|
||||||
|
procedure Add (Register : in out Integer; Value : Integer) is
|
||||||
|
begin
|
||||||
|
Register := Register + Value;
|
||||||
|
end Add;
|
||||||
|
|
||||||
|
|
||||||
end Shardware;
|
end Shardware;
|
||||||
|
@ -11,5 +11,6 @@ package Shardware is
|
|||||||
function My_Shift (Value : Byte; Amount : Integer) return Integer;
|
function My_Shift (Value : Byte; Amount : Integer) return Integer;
|
||||||
|
|
||||||
procedure Mov (Register : in out Integer; Value : Integer);
|
procedure Mov (Register : in out Integer; Value : Integer);
|
||||||
|
procedure Add (Register : in out Integer; Value : Integer);
|
||||||
|
|
||||||
end Shardware;
|
end Shardware;
|
||||||
|
@ -115,11 +115,21 @@ begin
|
|||||||
);
|
);
|
||||||
when 1 => Mov(Register(Integer(Instruction (2))), -- Move Register to Register
|
when 1 => Mov(Register(Integer(Instruction (2))), -- Move Register to Register
|
||||||
Register(Integer(Instruction (3))));
|
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 65535 => goto THE_END; -- exit opcode
|
||||||
when others => null;
|
when others => null;
|
||||||
end case;
|
end case;
|
||||||
|
|
||||||
Put_Line(Integer'Image(Register(0)));
|
Put_Line(Integer'Image(Register(0)));
|
||||||
|
Put_Line(Integer'Image(Register(1)));
|
||||||
|
|
||||||
PC := PC + 16; -- increment program counter to next instruction
|
PC := PC + 16; -- increment program counter to next instruction
|
||||||
end loop;
|
end loop;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user