Skip to content

Commit 32b838c

Browse files
Merge pull request #208 from andrew-johnson-4/strict-compiler-dev-20
Strict compiler dev 20
2 parents 9136bf0 + aa578f1 commit 32b838c

File tree

9 files changed

+64
-47
lines changed

9 files changed

+64
-47
lines changed

BOOTSTRAP/cli.s

+26-21
Original file line numberDiff line numberDiff line change
@@ -59427,32 +59427,16 @@ uuid_0000000000000355:
5942759427
call __s2i_C___
5942859428
mov %r12, -184(%rbp)
5942959429
mov %r13, -192(%rbp)
59430+
mov -184(%rbp),%r12
59431+
mov -192(%rbp),%r13
59432+
call inv
59433+
mov %r12, -168(%rbp)
59434+
mov %r13, -176(%rbp)
5943059435
uuid_0000000000000356:
5943159436
mov -184(%rbp),%r12
5943259437
mov -192(%rbp),%r13
5943359438
cmp $0, %r12
5943459439
je uuid_0000000000000357
59435-
mov $uuid_0000000000000316, %r12
59436-
mov $0, %r13
59437-
call __s2i_C___
59438-
push %r12
59439-
push %r13
59440-
mov -168(%rbp),%r12
59441-
mov -176(%rbp),%r13
59442-
call uuid_0000000000000003
59443-
mov %r12, 0(%r8)
59444-
mov %r13, 8(%r8)
59445-
pop %r13
59446-
pop %r12
59447-
push %r8
59448-
call uuid_0000000000000003
59449-
mov %r12, 0(%r8)
59450-
mov %r13, 8(%r8)
59451-
mov %r8, %r12
59452-
pop %r13
59453-
call add
59454-
mov %r12, -168(%rbp)
59455-
mov %r13, -176(%rbp)
5945659440
mov -136(%rbp),%r12
5945759441
mov -144(%rbp),%r13
5945859442
push %r12
@@ -59794,6 +59778,27 @@ uuid_0000000000000356:
5979459778
call __s2i_C___
5979559779
push %r12
5979659780
push %r13
59781+
mov -168(%rbp),%r12
59782+
mov -176(%rbp),%r13
59783+
call uuid_0000000000000003
59784+
mov %r12, 0(%r8)
59785+
mov %r13, 8(%r8)
59786+
pop %r13
59787+
pop %r12
59788+
push %r8
59789+
call uuid_0000000000000003
59790+
mov %r12, 0(%r8)
59791+
mov %r13, 8(%r8)
59792+
mov %r8, %r12
59793+
pop %r13
59794+
call add
59795+
mov %r12, -168(%rbp)
59796+
mov %r13, -176(%rbp)
59797+
mov $uuid_000000000000001f, %r12
59798+
mov $0, %r13
59799+
call __s2i_C___
59800+
push %r12
59801+
push %r13
5979759802
mov -152(%rbp),%r12
5979859803
mov -160(%rbp),%r13
5979959804
call uuid_0000000000000003

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lambda_mountain"
3-
version = "1.11.70"
3+
version = "1.11.71"
44
authors = ["Andrew <andrew@subarctic.org>"]
55
license = "MIT"
66
description = "Lambda Mountain"

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
nostd: prod
3-
./production --nostd -o tmp.s tests/strict/cc1.lm
3+
./production --nostd -o tmp.s tests/strict/cc2.lm
44
as -o tmp.o tmp.s
55
ld -o tmp tmp.o
66
./tmp && echo $?

PRODUCTION/stack.lm

+3-2
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,14 @@ stack-call := λ ctx function-name function-args offset . (tail(
4545
)))
4646
( copy-size (tail(
4747
(set copy-size (s2i copy-size))
48+
(set copy-offset (inv( copy-size )))
4849
(while copy-size (
49-
(set copy-offset (add( (s2i '-8) copy-offset )))
5050
(set copy-bytes ( copy-bytes
5151
\t 'mov \s (i2s( src-offset )) \[ '%rbp \] , \s '%rax \n
5252
\t 'mov \s '%rax , \s (i2s( copy-offset )) \[ '%rbp \] \n
5353
))
54-
(set src-offset (add( (s2i 8) src-offset )))
54+
(set copy-offset (add( (s2i '8) copy-offset )))
55+
(set src-offset (add( (s2i '8) src-offset )))
5556
(set copy-size (add( (s2i '-8) copy-size )))
5657
))
5758
)))

STDLIB/default-instruction-set.lm

+1-4
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,7 @@ fragment mov := λ(: src LocalVariable+Sized<size>)(: dst LocalVariable+Sized<si
3131
\t 'movq \s (+( (.expression src) (*( word-offset 8 )) )) \[ '%rbp \] , \s '%r15 \n
3232
\t 'movq \s '%r15 , \s (+(
3333
(.expression dst)
34-
(+(
35-
(+( size -8 ))
36-
(inv( (*( word-offset 8 )) ))
37-
))
34+
(*( word-offset 8 ))
3835
)) \[ '%rbp \] \n
3936
)))
4037
) Nil);

STDLIB/default-stdlib.lm

+8-7
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,17 @@ print := λ(: x S). (: (tail(
1818
(print (.1 (as x SAtom)))
1919
) (
2020
(if (==( (.0 x) 1u64 )) (tail(
21-
(let c SNil)
21+
# (let c SNil)
2222
(print '\[_s)
23-
(print( (as (.1 (as x SCons)) U64) ))
24-
(mov( (.1 (as x SCons)) 0u64 c ))
25-
(print c)
23+
# (print( (as (.1 (as x SCons)) U64) ))
24+
# (mov( (.1 (as x SCons)) 0u64 c ))
25+
# (print c)
2626
(print '\s_s)
27-
(print( (as (.2 (as x SCons)) U64) ))
28-
(mov( (.2 (as x SCons)) 0u64 c ))
29-
(print c)
27+
# (print( (as (.2 (as x SCons)) U64) ))
28+
# (mov( (.2 (as x SCons)) 0u64 c ))
29+
# (print c)
3030
(print '\]_s)
31+
()
3132
)) (tail(
3233
(print '[_s)
3334
(print (as (.1 (as x SPointer)) U64))

STRICT/cli.lm

+6-11
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,12 @@ config-mode := Compile;
1414
main := λ(: argc U64)(: argv U8[][]).(tail(
1515
# (let argi 0u64)
1616
(let input_l (SAtom( 'an-atom_s )))
17-
(let input_o SNil)
18-
(let close_l 0u64)
19-
(push (close( input_l )))
20-
(pop( close_l ))
21-
(mov( close_l R8 ))
22-
(mov( (as R8 S[]) 0u64 input_o ))
23-
(print input_o)
24-
# (push (close( input_r )))
25-
# (pop( close_r ))
26-
# (let input (SCons( (as close_l S[]) (as close_r S[]) )))
27-
# (print input)
17+
(let input_r (SPointer( 'test_s )))
18+
(let input (SCons(
19+
(close input_l)
20+
(close input_r)
21+
)))
22+
(print input)
2823
# (while (<( argi argc )) (
2924
# (if (==( ([]( argv argi )) '--tokenize_s )) (
3025
# (print '--tokenize_s)

tests/strict/cc2.lm

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
import STDLIB/default-instruction-set.lm;
3+
import STDLIB/default-primitives.lm;
4+
import STDLIB/default-rules.lm;
5+
import STDLIB/default-stdlib.lm;
6+
7+
echo := λ(: x U64). (: (
8+
x
9+
) U64);
10+
11+
main := (
12+
(let x SNil)
13+
# (let x (SCons(
14+
# (close(SAtom( 'an-atom_s )))
15+
# (close(SNil))
16+
# )))
17+
(print x)
18+
);

tests/strict/cc2.lm.out

Whitespace-only changes.

0 commit comments

Comments
 (0)