mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Add namespaces to Fift (#641)
* Add fift-based disassembler * Fift improvements: namespaces, hashmaps, flow controls * Fift: add lib with better block structuring and more * Minor changes in fift HashMap + tests (#643) * Minor changes in fift HashMap * Add tests for extended fift --------- Co-authored-by: OmicronTau <omicron@ton.org> Co-authored-by: Tolya <1449561+tolya-yanot@users.noreply.github.com> Co-authored-by: SpyCheese <mikle98@yandex.ru>
This commit is contained in:
parent
4590ed381b
commit
865ebfce8d
31 changed files with 2323 additions and 699 deletions
|
@ -1,12 +1,14 @@
|
|||
library TVM_Asm
|
||||
// simple TVM Assembler
|
||||
namespace Asm
|
||||
Asm definitions
|
||||
variable @atend
|
||||
variable @was-split
|
||||
false @was-split !
|
||||
{ "not in asm context" abort } @atend !
|
||||
{ `normal eq? not abort"must be terminated by }>" } : @normal?
|
||||
{ @atend @ 1 { @atend ! @normal? } does @atend ! } : @pushatend
|
||||
{ @pushatend <b } : <{
|
||||
{ context@ @atend @ 2 { @atend ! context! @normal? } does @atend ! } : @pushatend
|
||||
{ @pushatend Asm <b } : <{
|
||||
{ @atend @ execute } : @endblk
|
||||
{ false @was-split ! `normal @endblk } : }>
|
||||
{ }> b> } : }>c
|
||||
|
@ -1219,7 +1221,10 @@ variable asm-mode 1 asm-mode !
|
|||
{ 1 'nop does swap 0 (create) } : @declglobvar
|
||||
{ @proccnt @ 1+ dup @proccnt ! 1 @declproc } : @newproc
|
||||
{ @gvarcnt @ 1+ dup @gvarcnt ! @declglobvar } : @newglobvar
|
||||
{ 0 =: main @proclist null! @proccnt 0! @gvarcnt 0!
|
||||
variable @oldcurrent variable @oldctx
|
||||
Fift-wordlist dup @oldcurrent ! @oldctx !
|
||||
{ current@ @oldcurrent ! context@ @oldctx ! Asm definitions
|
||||
0 =: main @proclist null! @proccnt 0! @gvarcnt 0!
|
||||
{ bl word @newproc } : NEWPROC
|
||||
{ bl word dup (def?) ' drop ' @newproc cond } : DECLPROC
|
||||
{ bl word dup find
|
||||
|
@ -1293,6 +1298,7 @@ variable asm-mode 1 asm-mode !
|
|||
} while
|
||||
drop @proclist null! @procinfo null! @proccnt 0!
|
||||
@procdict dup @ swap null!
|
||||
@oldctx @ context! @oldcurrent @ current!
|
||||
} : }END
|
||||
forget @proclist forget @proccnt
|
||||
{ }END <{ SETCP0 swap @procdictkeylen DICTPUSHCONST DICTIGETJMPZ 11 THROWARG }> } : }END>
|
||||
|
@ -1319,3 +1325,8 @@ forget @proclist forget @proccnt
|
|||
{ <b 2 8 u, swap 256 u, b>spec } : hash>libref
|
||||
// ( c -- c' )
|
||||
{ hash hash>libref } : >libref
|
||||
|
||||
Fift definitions Asm
|
||||
' <{ : <{
|
||||
' PROGRAM{ : PROGRAM{
|
||||
Fift
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue