28 lines
465 B
Ruby
28 lines
465 B
Ruby
|
|
||
|
if (__FILE__ == $0)
|
||
|
gen = Asm::ARMCodeGenerator.new
|
||
|
|
||
|
gen.instance_eval {
|
||
|
mov r0, 5
|
||
|
loop_start = label
|
||
|
loop_start.set!
|
||
|
subs r0, r0, 1
|
||
|
bne loop_start
|
||
|
bx lr
|
||
|
}
|
||
|
|
||
|
require 'objectwriter'
|
||
|
require 'tempfile'
|
||
|
writer = Asm::ObjectWriter.new(Elf::Constants::TARGET_ARM)
|
||
|
writer.set_text gen.assemble
|
||
|
|
||
|
|
||
|
begin
|
||
|
writer.save('arm_as_generated.o')
|
||
|
rescue => err
|
||
|
puts 'as: cannot save output file: ' + err.message
|
||
|
exit
|
||
|
end
|
||
|
|
||
|
end
|