wip: nouncode linearizer

This commit is contained in:
Edward Amsden 2024-07-16 09:26:38 -05:00
parent f30783b2a4
commit 1a45b588d5
2 changed files with 209 additions and 1324 deletions

File diff suppressed because it is too large Load Diff

View File

@ -27,10 +27,6 @@
:: formula :: formula
+$ bell [text=sock form=*] +$ bell [text=sock form=*]
:: ::
:: internal label
::
:: labels a basic block within generated code for an arm
+$ bile [%bile axe=@ thus=@tas =bell]
:: noun shape :: noun shape
:: ::
:: labels axes of an abstract noun with SSA registers, possibly :: labels axes of an abstract noun with SSA registers, possibly
@ -53,9 +49,9 @@
:: %done: nock is in tail position, return result :: %done: nock is in tail position, return result
:: %next: jump to given label with result in given $need :: %next: jump to given label with result in given $need
+$ goal +$ goal
$% [%pick sass=@uvre zero=bile once=bile] $% [%pick sass=@uvre zero=@uwoo once=@uwoo]
[%done ~] [%done ~]
[%next what=need then=bile] [%next what=need then=@uwoo]
== ==
:: ::
:: instructions in a block :: instructions in a block
@ -174,19 +170,19 @@
:: %don - return value in s from current arm :: %don - return value in s from current arm
:: %bom - crash :: %bom - crash
+$ site +$ site
$% [%clq s=@uvre z=bile o=bile] $% [%clq s=@uvre z=@uwoo o=@uwoo]
[%eqq l=@uvre r=@uvre z=bile o=bile] [%eqq l=@uvre r=@uvre z=@uwoo o=@uwoo]
[%brn s=@uvre z=bile o=bile] [%brn s=@uvre z=@uwoo o=@uwoo]
[%hop t=bile] [%hop t=@uwoo]
[%hip c=bile t=bile] [%hip c=@uwoo t=@uwoo]
[%lnk u=@uvre f=@uvre d=@uvre t=bile] [%lnk u=@uvre f=@uvre d=@uvre t=@uwoo]
[%cal a=bell v=(list @uvre) d=@uvre t=bile] [%cal a=@uwoo v=(list @uvre) d=@uvre t=@uwoo]
[%caf a=bell v=(list @uvre) d=@uvre t=bile u=@uvre n=[path @]] [%caf a=@uwoo v=(list @uvre) d=@uvre t=@uwoo u=@uvre n=[path @]]
[%lnt u=@uvre f=@uvre] [%lnt u=@uvre f=@uvre]
[%jmp a=bell v=(list @uvre)] [%jmp a=@uwoo v=(list @uvre)]
[%jmf a=bell v=(list @uvre) u=@uvre n=[path @]] [%jmf a=@uwoo v=(list @uvre) u=@uvre n=[path @]]
[%spy e=@uvre p=@uvre d=@uvre t=bile] [%spy e=@uvre p=@uvre d=@uvre t=@uwoo]
[%mer k=@uvre u=@uvre f=@uvre d=@uvre i=bile m=bile] [%mer k=@uvre u=@uvre f=@uvre d=@uvre i=@uwoo m=@uwoo]
[%don s=@uvre] [%don s=@uvre]
[%bom ~] [%bom ~]
== ==
@ -197,7 +193,7 @@
:: flow instruction) :: flow instruction)
:: zero or more dataflow instructions executed in order, followed by a :: zero or more dataflow instructions executed in order, followed by a
:: single control-flow instruction :: single control-flow instruction
+$ blob [biff=(map @uvre (map bile @uvre)) body=(list pole) bend=site] +$ blob [biff=(map @uvre (map @uwoo @uvre)) body=(list pole) bend=site]
:: ::
:: compilation unit :: compilation unit
:: ::
@ -211,17 +207,27 @@
:: will: code table for arm axis 126 :: will: code table for arm axis 126
:: sans: next SSA register axis 127 :: sans: next SSA register axis 127
+$ pile +$ pile
$: long=bile $: want=need
want=need
walt=(list @uvre) walt=(list @uvre)
wish=bile
sire=@uvre sire=@uvre
will=(map bile blob)
sans=@uvre sans=@uvre
== ==
:: code table state
:: ::
:: code table :: Code table
:: ::
:: code entry information for arms :: hill: basic block table
+$ hill (map bell pile) :: peal: direct entry points
:: gong: indirect entry points
:: gist: register information
:: next: next free register
:: free: free label spaces
+$ fuji
$: hill=(map @uwoo blob)
peal=(map bell @uwoo)
gong=(map bell @uwoo)
gist=(map bell pile)
next=@uwoo
free=(list @uwoo)
==
-- --