blob: 1ca264b99de344a30d2d23230459bf8d519e1333 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
<
{ assembler -01 . } ":" deff
{ assemblerLibrary -01 . } "::" deff
assembler .|label "@" deff
"%" _ : -01 deff
{ .value elymas .base10decode ==v
[
# allocate int
::internalAllocateInteger /rax :movqImmReg
/rax :callqReg
# push int address on program stack
/rax :pushqReg
# type zero does not need to be changed
# load value
8 /rax :addqImm8Reg
v /rdx :movqImmReg
/rdx /rax :movqRegMem
] :execute
} /TOKINT
{ .value ::constStringCode :execute } /TOKSTR
{ .value ::constStringCode
[
global .internalExecuteIdentifier /rax :movqImmReg
/rax :callqReg
] cat :execute
} /TOKID
> -- 3 |defv rep
{ /input defv
"" {
4096 input .readstr cat
_ "" streq not
} {
{ _ "([^\\n]*)\\n(.*)" regex } { -102 -- TOKINT TOKSTR TOKID elymas .tokenize {
_ .handle
# assemblerLibrary .stackDump
# assemblerLibrary .globalScopeDump
} each } loop
} loop --
} /executeFile deff
# vim: syn=elymas
|