added ADDI and ADDIU
parent
481301023e
commit
1047cb9268
45
assembler.rb
45
assembler.rb
|
@ -23,6 +23,7 @@ end
|
||||||
|
|
||||||
|
|
||||||
# # # REGISTER NAMES # # #
|
# # # REGISTER NAMES # # #
|
||||||
|
def r0() 0 end # zero
|
||||||
def at() 1 end # assembler temporary
|
def at() 1 end # assembler temporary
|
||||||
|
|
||||||
# subroutine return values, may be changed by subroutines
|
# subroutine return values, may be changed by subroutines
|
||||||
|
@ -120,6 +121,25 @@ def sw(src, offset, dest)
|
||||||
word op
|
word op
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# add immediate unsigned
|
||||||
|
def addiu(src, val, dest)
|
||||||
|
# oooooo sssss ddddd iiiiiiii iiiiiiii
|
||||||
|
op = 0b001001_00000_00000_00000000_00000000
|
||||||
|
op |= (src & 0b11111) << 21
|
||||||
|
op |= (val & 0xffff)
|
||||||
|
op |= (dest & 0b11111) << 16
|
||||||
|
word op
|
||||||
|
end
|
||||||
|
|
||||||
|
# add immediate
|
||||||
|
def addi(src, val, dest)
|
||||||
|
# oooooo sssss ddddd iiiiiiii iiiiiiii
|
||||||
|
op = 0b001000_00000_00000_00000000_00000000
|
||||||
|
op |= (src & 0b11111) << 21
|
||||||
|
op |= (val & 0xffff)
|
||||||
|
op |= (dest & 0b11111) << 16
|
||||||
|
word op
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
# # # PSEUDO-INSTRUCTIONS # # #
|
# # # PSEUDO-INSTRUCTIONS # # #
|
||||||
|
@ -208,17 +228,28 @@ def line(st, en)
|
||||||
sw t1, 0, t0
|
sw t1, 0, t0
|
||||||
end
|
end
|
||||||
|
|
||||||
l_end_loop = label
|
# l_end_loop = label
|
||||||
line 0x0010_0010, 0x0030_0030
|
line 0x0010_0010, 0x0030_0030
|
||||||
line 0x0030_0030, 0x0060_0000
|
line 0x0030_0030, 0x0060_0000
|
||||||
line 0x0060_0000, 0x00f0_0060
|
line 0x0060_000a, 0x00f0_0060
|
||||||
|
|
||||||
nop ; nop ; nop ; nop
|
nop ; nop ; nop ; nop
|
||||||
nop ; nop ; nop ; nop
|
nop ; nop ; nop ; nop
|
||||||
nop ; nop ; nop ; nop
|
nop ; nop ; nop ; nop
|
||||||
nop ; nop ; nop ; nop
|
nop ; nop ; nop ; nop
|
||||||
|
|
||||||
# l_end_loop = label
|
l_end_loop = label
|
||||||
|
|
||||||
|
addiu r0, -10, t3
|
||||||
|
#addiu t3, 6, t3
|
||||||
|
addiu t3, -10, t3
|
||||||
|
nop
|
||||||
|
|
||||||
|
addi r0, -10, t4
|
||||||
|
#addi t4, 6, t4
|
||||||
|
addi t4, -10, t4
|
||||||
|
nop
|
||||||
|
|
||||||
nop
|
nop
|
||||||
jmp l_end_loop
|
jmp l_end_loop
|
||||||
nop
|
nop
|
||||||
|
@ -228,12 +259,8 @@ nop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
puts "assembled 0x#{$bytes.length.to_s 16} (#{$bytes.length}) bytes"
|
||||||
string "this is a test lol"
|
raise "CODE IS GREATER THAN FILESIZE" if $bytes.length > $file_size
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
zero_fill $file_size - 1
|
zero_fill $file_size - 1
|
||||||
|
|
||||||
f = File.new "LOADTHIS.EXE", "wb"
|
f = File.new "LOADTHIS.EXE", "wb"
|
||||||
|
|
Loading…
Reference in New Issue