fix block initialization style by adding init methods
This commit is contained in:
parent
529f109171
commit
4bb74a0de2
@ -87,7 +87,8 @@ module Asm
|
|||||||
@use_addrtable_reloc = true
|
@use_addrtable_reloc = true
|
||||||
@addrtable_reloc_target = arg1
|
@addrtable_reloc_target = arg1
|
||||||
else
|
else
|
||||||
raise Asm::AssemblyError.new(Asm::ERRSTR_INVALID_ARG, arg1)
|
puts "Invalid #{arg1.inspect}"
|
||||||
|
raise Asm::AssemblyError.new(Asm::ERRSTR_INVALID_ARG, arg1.inspect)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -33,18 +33,12 @@ class Asm::Arm::CodeGenerator
|
|||||||
args.each { |arg|
|
args.each { |arg|
|
||||||
if (arg.is_a?(Array))
|
if (arg.is_a?(Array))
|
||||||
if (arg[0] == :reg)
|
if (arg[0] == :reg)
|
||||||
node.args << Asm::RegisterArgNode.new { |n|
|
node.args << Asm::RegisterArgNode.new(arg[1])
|
||||||
n.name = arg[1]
|
|
||||||
}
|
|
||||||
end
|
end
|
||||||
elsif (arg.is_a?(Integer))
|
elsif (arg.is_a?(Integer))
|
||||||
node.args << Asm::NumLiteralArgNode.new { |n|
|
node.args << Asm::NumLiteralArgNode.new(arg)
|
||||||
n.value = arg
|
|
||||||
}
|
|
||||||
elsif (arg.is_a?(Symbol))
|
elsif (arg.is_a?(Symbol))
|
||||||
node.args << Asm::LabelRefArgNode.new { |n|
|
node.args << Asm::LabelRefArgNode.new(arg.to_s)
|
||||||
n.label = arg.to_s
|
|
||||||
}
|
|
||||||
elsif (arg.is_a?(Asm::Arm::GeneratorLabel) or arg.is_a?(Asm::Arm::GeneratorExternLabel))
|
elsif (arg.is_a?(Asm::Arm::GeneratorLabel) or arg.is_a?(Asm::Arm::GeneratorExternLabel))
|
||||||
node.args << arg
|
node.args << arg
|
||||||
else
|
else
|
||||||
@ -55,7 +49,7 @@ class Asm::Arm::CodeGenerator
|
|||||||
@asm.add_object Asm::Arm::Instruction.new(node)
|
@asm.add_object Asm::Arm::Instruction.new(node)
|
||||||
end
|
end
|
||||||
|
|
||||||
%w(adc add and bic eor orr rsb rsc sbc sub mov mvn cmn cmp teq tst b bl bx swi strb
|
%w(adc add and bic eor orr rsb rsc sbc sub mov mvn cmn cmp teq tst b bl bx swi str strb ldr ldrb
|
||||||
).each { |inst|
|
).each { |inst|
|
||||||
define_method(inst) { |*args|
|
define_method(inst) { |*args|
|
||||||
instruction inst.to_sym, *args
|
instruction inst.to_sym, *args
|
||||||
|
@ -37,6 +37,9 @@ module Asm
|
|||||||
|
|
||||||
class RegisterArgNode < ArgNode
|
class RegisterArgNode < ArgNode
|
||||||
attr_accessor :name
|
attr_accessor :name
|
||||||
|
def initialize name
|
||||||
|
@name = name
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class RegisterListArgNode < ArgNode
|
class RegisterListArgNode < ArgNode
|
||||||
@ -45,18 +48,28 @@ module Asm
|
|||||||
|
|
||||||
class NumLiteralArgNode < ArgNode
|
class NumLiteralArgNode < ArgNode
|
||||||
attr_accessor :value
|
attr_accessor :value
|
||||||
|
def initialize val
|
||||||
|
@value = val
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class NumEquivAddrArgNode < NumLiteralArgNode
|
class NumEquivAddrArgNode < NumLiteralArgNode
|
||||||
end
|
end
|
||||||
class LabelRefArgNode < ArgNode
|
class LabelRefArgNode < ArgNode
|
||||||
attr_accessor :label, :label_object
|
attr_accessor :label, :label_object
|
||||||
|
def initialize label , object = nil
|
||||||
|
@label = label
|
||||||
|
@label_object = object
|
||||||
|
end
|
||||||
end
|
end
|
||||||
class LabelEquivAddrArgNode < LabelRefArgNode
|
class LabelEquivAddrArgNode < LabelRefArgNode
|
||||||
end
|
end
|
||||||
|
|
||||||
class ReferenceArgNode < ArgNode
|
class ReferenceArgNode < ArgNode
|
||||||
attr_accessor :argument
|
attr_accessor :argument
|
||||||
|
def initilize arg
|
||||||
|
@argument = arg
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class ParseError < StandardError
|
class ParseError < StandardError
|
||||||
|
Loading…
Reference in New Issue
Block a user