mirror of
https://github.com/janet-lang/janet
synced 2025-11-01 08:03:02 +00:00
Work on interpreter. adding more opcodes and syscalls.
This commit is contained in:
@@ -7,7 +7,7 @@ int main() {
|
||||
DstAssembleResult ares;
|
||||
DstFunction *func;
|
||||
|
||||
FILE *f = fopen("./unittests/sample.dsts", "rb");
|
||||
FILE *f = fopen("./dsts/minimal.dsts", "rb");
|
||||
fseek(f, 0, SEEK_END);
|
||||
long fsize = ftell(f);
|
||||
fseek(f, 0, SEEK_SET); //same as rewind(f);
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
# A .dsts file will contain VM, assembly for a dst function. This includes
|
||||
# associated constants and what not. The assembler should be able to
|
||||
# simply construct a FuncDef from this file. This file is also parsed
|
||||
# in the same markup as dst itself (extended S expressions)
|
||||
{
|
||||
arity 3
|
||||
source "source file path"
|
||||
varargs false
|
||||
# Name for reference by nested funcdefs
|
||||
name outerfunc
|
||||
# Contains the bytecode for this function. This can be assembly
|
||||
# instructions or integers. Assembly will be converted to integer bytecodes immediately.
|
||||
bytecode [
|
||||
(load-constant 0 bork)
|
||||
(load-constant 1 bip)
|
||||
(add 0 0 1)
|
||||
(add-immediate 0 0 127)
|
||||
(push3 0 0 0)
|
||||
(push3 0 0 0)
|
||||
(push3 0 0 0)
|
||||
(syscall 1 0)
|
||||
(return 0)
|
||||
]
|
||||
# A source map is optional. The sourcemap corresponds with the byte code.
|
||||
# Each number is a 64 bit integer, the concatenation of two 32 bit integers.
|
||||
# These integers represent source character index for each instruction.
|
||||
# This format may change.
|
||||
# map [
|
||||
# 1
|
||||
# 2
|
||||
# 3
|
||||
# 10
|
||||
# 15
|
||||
# 39
|
||||
# 90
|
||||
# 134
|
||||
# ...
|
||||
# ]
|
||||
#
|
||||
# The number of slots available for the function.
|
||||
# Slots can be named as well for convenience.
|
||||
slots [
|
||||
x
|
||||
y
|
||||
z
|
||||
]
|
||||
# Captured outer environments that are referenced
|
||||
environments [ ]
|
||||
# Constants are an array or tuple. For named constants, use a tuple that begins with let
|
||||
# For a literal tuple, use (quote tuple), or 'tuple. Without names, constants must be indexed
|
||||
# from their number
|
||||
# Literal FuncEnvs and Functions may be possible later
|
||||
constants [
|
||||
"hello"
|
||||
(def bork 123)
|
||||
(def bip 456)
|
||||
'(1 2 3)
|
||||
(def atuple (1 2 3))
|
||||
(567)
|
||||
]
|
||||
# Arbitrary meta data can be added to the source
|
||||
my-meta-2 @{
|
||||
1 2 3 4
|
||||
}
|
||||
my-meta {
|
||||
1 2 3 4 5 6 7 8 9 0 11 12 13 14
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user