A bunch of prerequisites before we can do arrays, part 3, the pool pointer
This commit is contained in:
@@ -76,6 +76,8 @@ mod test {
|
||||
"call _forge_gensym_1",
|
||||
"hlt",
|
||||
"_forge_gensym_1:",
|
||||
"dup",
|
||||
"pushr",
|
||||
"pushr",
|
||||
"push 5",
|
||||
"jmpr @_forge_gensym_2",
|
||||
@@ -83,6 +85,8 @@ mod test {
|
||||
"_forge_gensym_2:",
|
||||
"popr",
|
||||
"pop",
|
||||
"popr",
|
||||
"pop",
|
||||
"ret",
|
||||
"stack: .db 0",
|
||||
].join("\n"));
|
||||
@@ -96,6 +100,8 @@ mod test {
|
||||
"hlt",
|
||||
"_forge_gensym_1: .db \"blah\\0\"",
|
||||
"_forge_gensym_2:",
|
||||
"dup",
|
||||
"pushr",
|
||||
"pushr",
|
||||
"push _forge_gensym_1", // Push the str
|
||||
"jmpr @_forge_gensym_3", // Return
|
||||
@@ -103,6 +109,8 @@ mod test {
|
||||
"_forge_gensym_3:", // outro
|
||||
"popr",
|
||||
"pop",
|
||||
"popr",
|
||||
"pop",
|
||||
"ret",
|
||||
"stack: .db 0",
|
||||
].join("\n"))
|
||||
@@ -122,13 +130,15 @@ mod test {
|
||||
"call _forge_gensym_3",
|
||||
"hlt",
|
||||
"_forge_gensym_1:", // fn foo()
|
||||
"dup", "pushr", // capture pool ptr
|
||||
"pushr", // capture frame ptr
|
||||
"push 0", // implicit return
|
||||
"_forge_gensym_2:",
|
||||
"popr",
|
||||
"pop",
|
||||
"popr", "pop",
|
||||
"popr", "pop",
|
||||
"ret",
|
||||
"_forge_gensym_3:", // fn main()
|
||||
"dup", "pushr", // capture pool ptr
|
||||
"pushr", // capture frame ptr
|
||||
"peekr", // prep frame ptr to send to foo
|
||||
"push _forge_gensym_1", // load foo
|
||||
@@ -136,7 +146,9 @@ mod test {
|
||||
"pop", // Throw away its return value
|
||||
"push 0", // Implicit return value
|
||||
"_forge_gensym_4:", // Outro start
|
||||
"popr", // Restore frame ptr
|
||||
"popr", // Drop frame ptr
|
||||
"pop",
|
||||
"popr", // Drop pool ptr
|
||||
"pop",
|
||||
"ret",
|
||||
"stack: .db 0",
|
||||
|
||||
Reference in New Issue
Block a user