adds first version of the expanded as assembler from mikko
This commit is contained in:
27
test/code_generator.rb
Normal file
27
test/code_generator.rb
Normal file
@ -0,0 +1,27 @@
|
||||
|
||||
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
|
19
test/elf_object.rb
Normal file
19
test/elf_object.rb
Normal file
@ -0,0 +1,19 @@
|
||||
if (__FILE__ == $0)
|
||||
obj = ELF::ObjectFile.new ELF::TARGET_ARM
|
||||
|
||||
sym_strtab = ELF::StringTableSection.new(".strtab")
|
||||
obj.add_section sym_strtab
|
||||
symtab = ELF::SymbolTableSection.new(".symtab", sym_strtab)
|
||||
obj.add_section symtab
|
||||
|
||||
text_section = ELF::TextSection.new(".text")
|
||||
obj.add_section text_section
|
||||
|
||||
symtab.add_func_symbol "_start", 0, text_section, ELF::STB_GLOBAL
|
||||
|
||||
fp = File.open("test.o", "wb")
|
||||
obj.write fp
|
||||
|
||||
fp.close
|
||||
end
|
||||
|
Reference in New Issue
Block a user