Skip to content

Commit d7cb2e3

Browse files
extremely simple malloc
1 parent fc9dc1b commit d7cb2e3

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lambda_mountain"
3-
version = "1.11.66"
3+
version = "1.11.67"
44
authors = ["Andrew <andrew@subarctic.org>"]
55
license = "MIT"
66
description = "Lambda Mountain"

STDLIB/default-primitives.lm

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,23 @@ fragment + := λ(: l LocalVariable+U64)(: r Constant+U64). (: (
108108
(.expression( 'r12 ))
109109
) Reg64+U64);
110110

111+
fragment + := λ(: l GlobalVariable+U64)(: r Literal+Constant+U64). (: (
112+
(.program( \t 'mov \s '$ (.expression l) , \s '%r15 \n \t 'mov \s '0 \[ '%r15 \] , '%r15 \n \t 'add \s '$ (.expression r) , \s '%r15 \n ))
113+
(.expression( 'r15 ))
114+
) Reg64+U64);
115+
fragment + := λ(: l Literal+Constant+U64)(: r GlobalVariable+U64). (: (
116+
(.program( \t 'mov \s '$ (.expression r) , \s '%r15 \n \t 'mov \s '0 \[ '%r15 \] , '%r15 \n \t 'add \s '$ (.expression l) , \s '%r15 \n ))
117+
(.expression( 'r15 ))
118+
) Reg64+U64);
119+
120+
fragment + := λ(: l GlobalVariable+U64)(: r LocalVariable+U64). (: (
121+
(.program( \t 'mov \s '$ (.expression l) , \s '%r15 \n
122+
\t 'mov \s '0 \[ '%r15 \] , '%r15 \n
123+
\t 'mov \s (.expression r) \[ '%rbp \] , '%r14 \n
124+
\t 'add \s '%r14 , \s '%r15 \n ))
125+
(.expression( 'r15 ))
126+
) Reg64+U64);
127+
111128
fragment - := λ(: l LocalVariable+U8)(: r Constant+U8). (: (
112129
(.program( \t 'mov \s (.expression l) \[ '%rbp \] , \s '%r12b \n \t 'sub \s '$ (.expression r) , \s '%r12b \n ))
113130
(.expression( 'r12b ))

STDLIB/default-stdlib.lm

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,6 @@ malloc := λ (: sz U64) . (: (tail(
189189
(syscall())
190190
)) ())
191191
(let curr cons-page-tail)
192-
# (cons-page-tail (+ cons-page-tail sz))
193-
# (as curr ?[])
194-
(as 0u64 ?[])
192+
(set cons-page-tail (+( cons-page-tail sz )))
193+
(as curr ?[])
195194
)) ?[]);

STRICT/cli.lm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ main := λ(: argc U64)(: argv U8[][]).(tail(
2121
)))
2222
(print input)
2323
(print (as (malloc 24u64) U64))
24+
(print ',_s)
25+
(print (as (malloc 24u64) U64))
26+
(print ',_s)
27+
(print (as (malloc 24u64) U64))
2428
# (while (<( argi argc )) (
2529
# (if (==( ([]( argv argi )) '--tokenize_s )) (
2630
# (print '--tokenize_s)

0 commit comments

Comments
 (0)