diff --git a/lib/arm/arm_machine.rb b/lib/arm/arm_machine.rb index fc170c26..2a13fbc3 100644 --- a/lib/arm/arm_machine.rb +++ b/lib/arm/arm_machine.rb @@ -10,29 +10,29 @@ require_relative "constants" module Arm class ArmMachine < Vm::CMachine - def integer_less_or_equal block , first , right - block << cmp( first , right ) + def integer_less_or_equal block , left , right + block << cmp( left , right ) Vm::Bool.new end - def integer_plus block , result , first , right - block << add( result , first , right ) + def integer_plus block , result , left , right + block << add( result , left , right ) result end - def integer_minus block , result , first , right - block << sub( result , first , right ) + def integer_minus block , result , left , right + block << sub( result , left , right ) result end - def integer_load block , first , right - block << mov( first , right ) - first + def integer_load block , to , from + block << mov( to , from ) + to end - def integer_move block , first , right - block << mov( first , right ) - first + def integer_move block , to , from + block << mov( to , from ) + to end def string_load block , str_lit , reg @@ -45,7 +45,7 @@ module Arm def function_call into , call raise "Not CallSite #{call.inspect}" unless call.is_a? Vm::CallSite raise "Not linked #{call.inspect}" unless call.function - into << call( call.function , {}) + into << call( call.function ) call.function.return_type end @@ -57,10 +57,10 @@ module Arm exit end def function_entry block, f_name - block << push( [:lr] , {}) + block << push( [:lr] ) end def function_exit entry , f_name - entry << pop( [:pc] , {}) + entry << pop( [:pc] ) end # assumes string in r0 and r1 and moves them along for the syscall @@ -98,7 +98,7 @@ module Arm def syscall block , num block << mov( :r7 , num ) - block << swi( 0 , {}) + block << swi( 0 ) Vm::Integer.new(0) #small todo, is this actually correct for all (that they return int) end diff --git a/lib/core/kernel.rb b/lib/core/kernel.rb index 58568044..dc78956d 100644 --- a/lib/core/kernel.rb +++ b/lib/core/kernel.rb @@ -45,7 +45,7 @@ module Core mov( reg1 , str_addr ) #move arg up add( str_addr , buffer ,nil ) # string to write to add( str_addr , str_addr , (buffer.length-3)) - call( itos_fun , {}) + call( itos_fun ) # And now we "just" have to print it, using the write_stdout add( str_addr , buffer , nil ) # string to write to mov( reg1 , buffer.length ) @@ -71,7 +71,7 @@ module Core strb( remainder, right: str_addr ) sub( str_addr, str_addr , 1 ) cmp( number , 0 ) - callne( function , {} ) + callne( function ) end return function end diff --git a/lib/vm/program.rb b/lib/vm/program.rb index ce5599e9..a217d305 100644 --- a/lib/vm/program.rb +++ b/lib/vm/program.rb @@ -89,7 +89,7 @@ module Vm # assemble in the same order as linked def assemble( io ) - link_at( @position , {}) #second link in case of forward declarations + link_at( @position , nil) #second link in case of forward declarations @entry.assemble( io ) @main.assemble( io ) @exit.assemble( io ) diff --git a/test/arm/test_arm.rb b/test/arm/test_arm.rb index 9bdd18f6..6688231c 100644 --- a/test/arm/test_arm.rb +++ b/test/arm/test_arm.rb @@ -7,7 +7,7 @@ class TestArmAsm < MiniTest::Test # the address is what an assembler calculates (a signed number for the amount of instructions), # ie the relative (to pc) address -8 (pipeline) /4 so save space # so the cpu adds the value*4 and starts loading that (load, decode, execute) - code = @machine.b -4 , {} #this jumps to the next instruction + code = @machine.b -4 #this jumps to the next instruction assert_code code , :b , [0xff,0xff,0xff,0xea] #ea ff ff fe end def test_call #see comment above. bx not implemented (as it means into thumb, and no thumb here) @@ -15,11 +15,11 @@ class TestArmAsm < MiniTest::Test assert_code code , :call, [0xff,0xff,0xff,0xeb] #ea ff ff fe end def test_push - code = @machine.push [:lr] , {} + code = @machine.push [:lr] assert_code code , :push , [0x00,0x40,0x2d,0xe9] #e9 2d 40 00 end def test_pop - code = @machine.pop [:pc] , {} + code = @machine.pop [:pc] assert_code code , :pop , [0x00,0x80,0xbd,0xe8] #e8 bd 80 00 end def test_swi diff --git a/test/test_small_program.rb b/test/test_small_program.rb index 64d257d6..6ebac49c 100644 --- a/test/test_small_program.rb +++ b/test/test_small_program.rb @@ -33,7 +33,7 @@ class TestSmallProg < MiniTest::Test mov :r0 , 1 # stdout add :r1 , hello , nil # address of "hello Raisa" mov :r2 , hello.length - swi 0 , {} #software interupt, ie kernel syscall + swi 0 #software interupt, ie kernel syscall end write(7 + hello.length/4 + 1 , 'hello') end