mirror of
https://github.com/urbit/ares.git
synced 2024-11-28 19:32:00 +03:00
wip: nouncode linearizer
This commit is contained in:
parent
f30783b2a4
commit
1a45b588d5
File diff suppressed because it is too large
Load Diff
@ -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)
|
||||||
|
==
|
||||||
--
|
--
|
||||||
|
Loading…
Reference in New Issue
Block a user