Compare commits
No commits in common. "61fb44bbce2a5257587b25f61f7f40ba32078a83" and "a7e24c059bf5180a66c8527ac53d7813614df178" have entirely different histories.
61fb44bbce
...
a7e24c059b
@ -1,7 +0,0 @@
|
|||||||
fun main(): u0 {
|
|
||||||
1+2+3;
|
|
||||||
var a = 5+5;
|
|
||||||
var b = a;
|
|
||||||
var a = a + b;
|
|
||||||
var c = a - b;
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
fun double(a): u8 {
|
|
||||||
return a + a;
|
|
||||||
}
|
|
||||||
|
|
||||||
fun quadruple(a): u8 {
|
|
||||||
return double(double(a));
|
|
||||||
}
|
|
||||||
|
|
||||||
fun reuse(): u0 {
|
|
||||||
var one = 2;
|
|
||||||
var two = 4;
|
|
||||||
var three = 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
fun main(): u0 {
|
|
||||||
var a = quadruple(4);
|
|
||||||
var one = 1;
|
|
||||||
var two = 2;
|
|
||||||
var three = 3;
|
|
||||||
reuse();
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
fun main(): u0 {
|
|
||||||
draw_number(69, 1, 1);
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
fun main(): u0 {
|
|
||||||
var a = 3+3;
|
|
||||||
if(a) {
|
|
||||||
a = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
var b = 0;
|
|
||||||
if(b) {
|
|
||||||
b = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(b) {
|
|
||||||
b = 4;
|
|
||||||
} else {
|
|
||||||
b = 5;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,4 +0,0 @@
|
|||||||
fun main(): u0 {
|
|
||||||
var a = get_key();
|
|
||||||
var b = get_key();
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
fun main(): u0 {
|
|
||||||
var a = 5;
|
|
||||||
var b = 0;
|
|
||||||
while(a) {
|
|
||||||
b = b + 2;
|
|
||||||
a = a - 1;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
fun main(): u0 {
|
|
||||||
var a = 1;
|
|
||||||
var b = 1;
|
|
||||||
while(233 - a) {
|
|
||||||
draw_number(a, 24, 13);
|
|
||||||
set_delay(30);
|
|
||||||
var temp = a;
|
|
||||||
a = b;
|
|
||||||
b = b + temp;
|
|
||||||
while(get_delay()){}
|
|
||||||
draw_number(temp, 24, 13);
|
|
||||||
}
|
|
||||||
draw_number(a, 24, 13);
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
fun main(): u0 {
|
|
||||||
var a = 1;
|
|
||||||
var b = 0;
|
|
||||||
var previous = 0;
|
|
||||||
draw_number(0, 24, 13);
|
|
||||||
|
|
||||||
while(a) {
|
|
||||||
previous = b;
|
|
||||||
b = get_key();
|
|
||||||
draw_number(previous, 24, 13);
|
|
||||||
draw_number(b, 24, 13);
|
|
||||||
}
|
|
||||||
}
|
|
@ -91,7 +91,7 @@ module Chalk
|
|||||||
when Trees::TreeBlock
|
when Trees::TreeBlock
|
||||||
table = Table.new(table)
|
table = Table.new(table)
|
||||||
tree.children.each do |child|
|
tree.children.each do |child|
|
||||||
free += generate! child, table, THROWAWAY_REG, free
|
free += generate! child, table, free, free + 1
|
||||||
end
|
end
|
||||||
when Trees::TreeVar
|
when Trees::TreeVar
|
||||||
entry = table[tree.name]?
|
entry = table[tree.name]?
|
||||||
@ -134,8 +134,7 @@ module Chalk
|
|||||||
cond_jump.offset = @instructions.size - old_size + 1
|
cond_jump.offset = @instructions.size - old_size + 1
|
||||||
after_jump.offset = before_cond - instructions.size + 1
|
after_jump.offset = before_cond - instructions.size + 1
|
||||||
when Trees::TreeReturn
|
when Trees::TreeReturn
|
||||||
generate! tree.rvalue, table, free, free + 1
|
generate! tree.rvalue, table, RETURN_REG, free
|
||||||
loadr RETURN_REG, free
|
|
||||||
ret
|
ret
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
@ -143,7 +142,7 @@ module Chalk
|
|||||||
|
|
||||||
# Generates code for the function that was given to it.
|
# Generates code for the function that was given to it.
|
||||||
def generate!
|
def generate!
|
||||||
generate!(@function.block, @table, 0, @registers)
|
generate!(@function.block, @table, -1, @registers)
|
||||||
return @instructions
|
return @instructions
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -4,8 +4,6 @@ module Chalk
|
|||||||
RETURN_REG = 14
|
RETURN_REG = 14
|
||||||
# The register into which the "stack pointer" is stored.
|
# The register into which the "stack pointer" is stored.
|
||||||
STACK_REG = 13
|
STACK_REG = 13
|
||||||
# Register used for throwing away values.
|
|
||||||
THROWAWAY_REG = 12
|
|
||||||
|
|
||||||
# Module to emit instructions and store
|
# Module to emit instructions and store
|
||||||
# them into an existing array.
|
# them into an existing array.
|
||||||
|
Loading…
Reference in New Issue
Block a user