clean and work on labels

This commit is contained in:
Torsten Ruger
2014-04-21 17:27:05 +03:00
parent f0c0166d1f
commit ff38bde44e
7 changed files with 70 additions and 54 deletions

View File

@ -8,18 +8,25 @@ class TestExtern < MiniTest::Test
@generator = Asm::Arm::CodeGenerator.new
end
def test_generate_small
def test_extern
@generator.instance_eval {
ldr r0, "hello world" #1
bl :printf #2
mov r7, 1 #3
swi 0 #4 4 instruction x 4 == 16
push lr
ldr r0, "hello world".to_sym
mov r7, 4 #4 is write
swi 0
pop pc
mov r7, 1 #1 == exit
swi 0
}
write(7 , 'label')
end
#helper to write the file
def write len ,name
writer = Asm::ObjectWriter.new(Elf::Constants::TARGET_ARM)
assembly = @generator.assemble
assert_equal 20 , assembly.length
assert_equal len * 4 , assembly.length
writer.set_text assembly
writer.save('small_test.o')
writer.save("#{name}_test.o")
end
end

View File

@ -15,8 +15,7 @@ class TestSmallProg < MiniTest::Test
def test_generate_small
@generator.instance_eval {
mov r0, 5 #1
loop_start = label
loop_start.set!
loop_start = label!
subs r0, r0, 1 #2
bne loop_start #3
mov r7, 1 #4
@ -48,6 +47,6 @@ class TestSmallProg < MiniTest::Test
assembly = @generator.assemble
assert_equal len * 4 , assembly.length
writer.set_text assembly
writer.save('#{name}_test.o')
writer.save("#{name}_test.o")
end
end