39 lines
989 B
Ruby
39 lines
989 B
Ruby
module Risc
|
|
# A platform is (or will be) something like the linux tripple
|
|
#
|
|
# Currently it just provides a Translator and binary start point
|
|
#
|
|
class Platform
|
|
|
|
# return the translator instance that traslates risc intructions into
|
|
# platform specific ones
|
|
def translator
|
|
end
|
|
|
|
# return an integer where the binary is loaded
|
|
def loaded_at
|
|
end
|
|
|
|
# return the number of registers the platform supports
|
|
def num_registers
|
|
end
|
|
|
|
# Factory method to create a Platform object according to the platform
|
|
# string given.
|
|
# Currently only "Arm" and "Interpreter"
|
|
def self.for( name )
|
|
return name if name.is_a?(Platform)
|
|
name = name.to_s.capitalize
|
|
case name
|
|
when "Arm"
|
|
return Arm::ArmPlatform.new
|
|
when "Interpreter"
|
|
return Risc::InterpreterPlatform.new
|
|
else
|
|
raise "not recognized platform #{name.class}:#{name}"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
require_relative "interpreter_platform"
|