update to work with positions
This commit is contained in:
parent
9832c8730b
commit
3451b546c3
@ -10,13 +10,13 @@ class HtmlConverter < AST::Processor
|
|||||||
puts "Missing: " + s.type
|
puts "Missing: " + s.type
|
||||||
"Missing #{s.type}"
|
"Missing #{s.type}"
|
||||||
end
|
end
|
||||||
def div statement , html
|
def div( statement , html)
|
||||||
"<div class='statement' id='i#{statement.object_id.to_s(16)}'>" + html + "</div>"
|
"<div class='statement' id='i#{statement.object_id.to_s(16)}'>" + html + "</div>"
|
||||||
end
|
end
|
||||||
def span statement , html
|
def span( statement , html)
|
||||||
"<span class='expression' id='i#{statement.object_id.to_s(16)}'>" + html + "</span>"
|
"<span class='expression' id='i#{statement.object_id.to_s(16)}'>" + html + "</span>"
|
||||||
end
|
end
|
||||||
def on_function statement
|
def on_function( statement)
|
||||||
return_type , name , parameters, kids , receiver = *statement
|
return_type , name , parameters, kids , receiver = *statement
|
||||||
str = return_type + " "
|
str = return_type + " "
|
||||||
str += receiver + "." if receiver
|
str += receiver + "." if receiver
|
||||||
|
@ -57,13 +57,13 @@ class SelectView < ElementView
|
|||||||
|
|
||||||
def select( code )
|
def select( code )
|
||||||
puts "selecting #{code}"
|
puts "selecting #{code}"
|
||||||
machine = Risc.machine.boot
|
Risc.machine.boot
|
||||||
@interpreter.set_state :stopped
|
@interpreter.set_state :stopped
|
||||||
@element.at_css(".selected").text = code
|
@element.at_css(".selected").text = code
|
||||||
ruby = get_codes[code]
|
ruby = get_codes[code]
|
||||||
Vool::VoolCompiler.ruby_to_vool( as_main(ruby) )
|
Risc.machine.boot
|
||||||
machine.objects
|
Vool::VoolCompiler.ruby_to_binary( as_main(ruby) , :interpreter )
|
||||||
@interpreter.start machine.risc_init
|
@interpreter.start_machine
|
||||||
end
|
end
|
||||||
def as_main(statements)
|
def as_main(statements)
|
||||||
"class Space ;def main(arg) ; #{statements}; end; end"
|
"class Space ;def main(arg) ; #{statements}; end; end"
|
||||||
@ -73,6 +73,7 @@ class SelectView < ElementView
|
|||||||
set_internal_byte: "return 'Hello'.set_internal_byte(1,75)" ,
|
set_internal_byte: "return 'Hello'.set_internal_byte(1,75)" ,
|
||||||
called_if: 'if( 10 ); return "then";else;return "else";end' ,
|
called_if: 'if( 10 ); return "then";else;return "else";end' ,
|
||||||
plus: 'return 5 + 7' ,
|
plus: 'return 5 + 7' ,
|
||||||
|
return: 'return 5' ,
|
||||||
hello_world: "h = 'Hello World'.putstring;return h",
|
hello_world: "h = 'Hello World'.putstring;return h",
|
||||||
dynamic_call: "a = 150 ; return a.div10",
|
dynamic_call: "a = 150 ; return a.div10",
|
||||||
}
|
}
|
||||||
|
@ -40,8 +40,10 @@ class ObjectView < ListView
|
|||||||
end
|
end
|
||||||
|
|
||||||
def class_header
|
def class_header
|
||||||
|
pos = Risc::Position.set?(@object)
|
||||||
|
str = pos ? pos.to_s : @object.object_id.to_s(16)
|
||||||
clazz = @object.class.name.split("::").last
|
clazz = @object.class.name.split("::").last
|
||||||
[clazz, @object.object_id.to_s(16)].join " : "
|
[clazz, str].join " : "
|
||||||
end
|
end
|
||||||
|
|
||||||
def content_elements
|
def content_elements
|
||||||
|
@ -60,6 +60,8 @@ class RefView < ListView
|
|||||||
elsif is_object?
|
elsif is_object?
|
||||||
var = @value
|
var = @value
|
||||||
str = var.class.name.split("::").last[0,2]
|
str = var.class.name.split("::").last[0,2]
|
||||||
|
pos = Risc::Position.set?(@value)
|
||||||
|
str += pos ? pos.to_s : @value.object_id.to_s(16)
|
||||||
str + " : #{@value.object_id.to_s(16)}"
|
str + " : #{@value.object_id.to_s(16)}"
|
||||||
elsif is_label?
|
elsif is_label?
|
||||||
str = "Label"
|
str = "Label"
|
||||||
|
@ -24,10 +24,10 @@ class RegistersView < ListView
|
|||||||
def register_changed( reg , old , value )
|
def register_changed( reg , old , value )
|
||||||
reg = reg.symbol unless reg.is_a? Symbol
|
reg = reg.symbol unless reg.is_a? Symbol
|
||||||
index = reg.to_s[1 .. -1 ].to_i
|
index = reg.to_s[1 .. -1 ].to_i
|
||||||
has = Risc.machine.objects[value.object_id]
|
has = Risc::Position.set?(value)
|
||||||
if( has )
|
if( has )
|
||||||
if has.is_a?(Risc::Label)
|
if has.object.is_a?(Risc::Label)
|
||||||
swap = ValueView.new "Label: #{has.name}"
|
swap = ValueView.new "Label: #{has.object.name}"
|
||||||
else
|
else
|
||||||
swap = ObjectView.new( value , @interpreter , 16 - index )
|
swap = ObjectView.new( value , @interpreter , 16 - index )
|
||||||
end
|
end
|
||||||
@ -49,6 +49,6 @@ class ValueView < ElementView
|
|||||||
def draw
|
def draw
|
||||||
li = div("li")
|
li = div("li")
|
||||||
li << div("span", @value)
|
li << div("span", @value)
|
||||||
@element = div("ul.nav!") << li
|
@element = div("ul.nav!") << li
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -19,8 +19,10 @@ class StatusView < ElementView
|
|||||||
div("span.clock" , clock_text) <<
|
div("span.clock" , clock_text) <<
|
||||||
div( "br") <<
|
div( "br") <<
|
||||||
div("span.flags" , flags_text) <<
|
div("span.flags" , flags_text) <<
|
||||||
div( "br" , "Stdout") <<
|
div( "br") <<
|
||||||
div("span.stdout")
|
div( "span.stdout" , "Stdout") <<
|
||||||
|
div( "br") <<
|
||||||
|
div( "span.status" , "Status")
|
||||||
# set up event handler
|
# set up event handler
|
||||||
@element.at_css(".next").on("click") { self.update }
|
@element.at_css(".next").on("click") { self.update }
|
||||||
@element.at_css(".run").on("mousedown") { self.start( 0.1 ) }
|
@element.at_css(".run").on("mousedown") { self.start( 0.1 ) }
|
||||||
@ -52,8 +54,18 @@ class StatusView < ElementView
|
|||||||
@element.at_css(".header_state").text = state_text
|
@element.at_css(".header_state").text = state_text
|
||||||
@element.at_css(".flags").text = flags_text
|
@element.at_css(".flags").text = flags_text
|
||||||
@element.at_css(".stdout").text = @interpreter.stdout
|
@element.at_css(".stdout").text = @interpreter.stdout
|
||||||
|
@element.at_css(".status").text = status_text
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def status_text
|
||||||
|
return "#{@interpreter.instruction.to_s}" unless @interpreter.instruction.source
|
||||||
|
source = @interpreter.instruction.source
|
||||||
|
s = "#{source.to_s}"
|
||||||
|
if( source.respond_to?(:source) and source.source )
|
||||||
|
s += @interpreter.instruction.source.source.to_s
|
||||||
|
end
|
||||||
|
s
|
||||||
|
end
|
||||||
def state_text
|
def state_text
|
||||||
" (#{@interpreter.state})"
|
" (#{@interpreter.state})"
|
||||||
end
|
end
|
||||||
@ -67,6 +79,6 @@ class StatusView < ElementView
|
|||||||
end
|
end
|
||||||
|
|
||||||
def clock_text
|
def clock_text
|
||||||
"Instruction #{@interpreter.clock}"
|
"Instruction #{@interpreter.clock}-0x#{@interpreter.pc.to_s(16)}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user