sorting mom instructions and statements into separate dirs
This commit is contained in:
parent
2779045caa
commit
20a88f9ac8
@ -1,6 +1,6 @@
|
|||||||
# The *essential* step from vool to risc, is the one from a language to a machine. From statements
|
# The *essential* step from vool to risc, is the one from a language to a machine. From statements
|
||||||
# that hang in the air, to an instruction set.
|
# that hang in the air, to an instruction set.
|
||||||
#
|
#
|
||||||
# ### Tree based: So almost 1-1 from vool
|
# ### Tree based: So almost 1-1 from vool
|
||||||
#
|
#
|
||||||
# ### Use object memory : object to object transfer + no registers
|
# ### Use object memory : object to object transfer + no registers
|
||||||
@ -14,4 +14,5 @@
|
|||||||
module Mom
|
module Mom
|
||||||
end
|
end
|
||||||
|
|
||||||
require_relative "mom/instruction.rb"
|
require_relative "mom/instruction/instruction.rb"
|
||||||
|
require_relative "mom/statement/statement.rb"
|
||||||
|
@ -62,7 +62,7 @@ To make the transition even easier, it is done in two steps.
|
|||||||
|
|
||||||
## 1. Everything but control structures
|
## 1. Everything but control structures
|
||||||
|
|
||||||
So we go from language to machine as the first step, in terms of memory instructions.
|
wSo we go from language to machine as the first step, in terms of memory instructions.
|
||||||
Memory gets moved around between the main machine objects (frames and messages).
|
Memory gets moved around between the main machine objects (frames and messages).
|
||||||
But control structures stay "intact", so we stay at tree structure
|
But control structures stay "intact", so we stay at tree structure
|
||||||
|
|
||||||
@ -77,4 +77,4 @@ After this, it is quite trivial to translate to risc, as it mostly expands instr
|
|||||||
|
|
||||||
I hope that in the future this simple 2 stage pipeline will expand into more steps.
|
I hope that in the future this simple 2 stage pipeline will expand into more steps.
|
||||||
This is the ideal layer to do code analysis and meaningful optimisations, as one can still
|
This is the ideal layer to do code analysis and meaningful optimisations, as one can still
|
||||||
understand what is going on in higher terms.
|
understand what is going on in higher terms.
|
||||||
|
@ -17,7 +17,7 @@ module Mom
|
|||||||
@name = name
|
@name = name
|
||||||
end
|
end
|
||||||
def to_risc(compiler)
|
def to_risc(compiler)
|
||||||
Risc::Label.new(self,name)
|
Risc::Label.new(self,name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -32,4 +32,3 @@ require_relative "slot_load"
|
|||||||
require_relative "return_sequence"
|
require_relative "return_sequence"
|
||||||
require_relative "message_setup"
|
require_relative "message_setup"
|
||||||
require_relative "argument_transfer"
|
require_relative "argument_transfer"
|
||||||
require_relative "statement"
|
|
15
lib/mom/statement/statement.rb
Normal file
15
lib/mom/statement/statement.rb
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
module Mom
|
||||||
|
class Statement
|
||||||
|
include Common::List
|
||||||
|
# flattening will change the structure from a tree to a linked list (and use
|
||||||
|
# nekst to do so)
|
||||||
|
def flatten(options = {})
|
||||||
|
raise "not implemented for #{self}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
require_relative "statements"
|
||||||
|
require_relative "if_statement"
|
||||||
|
require_relative "while_statement"
|
@ -1,13 +1,4 @@
|
|||||||
module Mom
|
module Mom
|
||||||
class Statement
|
|
||||||
include Common::List
|
|
||||||
# flattening will change the structure from a tree to a linked list (and use
|
|
||||||
# nekst to do so)
|
|
||||||
def flatten(options = {})
|
|
||||||
raise "not implemented for #{self}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
class Statements < Statement
|
class Statements < Statement
|
||||||
include Common::Statements
|
include Common::Statements
|
||||||
|
|
||||||
@ -26,8 +17,4 @@ module Mom
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
require_relative "if_statement"
|
|
||||||
require_relative "while_statement"
|
|
Loading…
x
Reference in New Issue
Block a user