clean and work on labels
This commit is contained in:
@ -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
|
@ -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
|
||||
|
Reference in New Issue
Block a user