From 19e844f43ec72999967bf1b584d72acb11549032 Mon Sep 17 00:00:00 2001 From: bx Date: Tue, 31 Aug 2021 10:50:42 +0100 Subject: [PATCH] added load word immediate(lwi) pseudo-instruction --- assembler.rb | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/assembler.rb b/assembler.rb index b745edd..462b253 100644 --- a/assembler.rb +++ b/assembler.rb @@ -77,6 +77,7 @@ def ori(src, bits, dest) end # store word +# NOTE: this doesn't work unaligned def sw(src, offset, dest) # oooooo ddddd sssss iiiiiiii iiiiiiii op = 0b101011_00000_00000_00000000_00000000 @@ -93,6 +94,12 @@ def nop word 0x00000000 end +# load word immediate +def lwi(val, dest) + lui val >> 16, dest + ori dest, val, dest +end + @@ -137,20 +144,13 @@ nop ; jmp $base_addr + 16 ; nop ; word 0xdeadbeef # ops should always be in format of # src [args] -> dest -lui $gp0 >> 16, 1 -ori 1, $gp0, 1 +lwi $gp0, 1 nop -#lui 0, 3 -#ori 3, 0xffff, 3 - -#sw 1, 0, 2 - -32.times do |i| - ori i, 0xf00d, i -end +lwi 0x10040, 2 +sw 1, 0, 2 nop ; nop ; nop ; nop nop ; nop ; nop ; nop