1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-02-13 03:32:22 +00:00
ton/crypto/test/fift/asm-nested-program.fif

93 lines
2 KiB
Text
Raw Normal View History

"Asm.fif" include
// Four programs:
// 4 contains 2 and 3, 2 contains 1
// Program #1
PROGRAM{
DECLPROC foo1
DECLPROC foo2
DECLPROC foo3
DECLPROC main
foo1 PROC:<{ MUL INC }>
foo2 PROCINLINE:<{ PLDREF }>
foo3 PROC:<{ CTOS foo2 INLINECALLDICT CTOS 32 PLDU }>
main PROC:<{ 0 PUSHINT }>
}END>c constant code-1
// Program #2
PROGRAM{
DECLPROC foo3
DECLPROC foo4
DECLPROC main
foo3 PROC:<{ code-1 PUSHREF }>
foo4 PROC:<{ CTOS 8 PLDU }>
main PROC:<{ foo3 CALLDICT foo4 CALLDICT NEWC ROT STUX }>
}END>c constant code-2
// Program #3
PROGRAM{
DECLPROC foo1
DECLPROC foo4
DECLPROC main
foo1 PROC:<{ DUP 137 PUSHINT MUL PAIR }>
foo4 PROC:<{ UNPAIR SWAP DIV }>
main PROC:<{ 70 PUSHINT DIV }>
}END>c constant code-3
// Program #4
PROGRAM{
DECLPROC foo2
DECLPROC foo3
DECLPROC foo5
DECLPROC main
foo2 PROC:<{ code-2 PUSHREF }>
foo3 PROC:<{ code-3 PUSHREF }>
foo5 PROC:<{ foo2 CALLDICT CTOS 8 PLDU 1 RSHIFT# }>
main PROC:<{ foo5 CALLDICT 5 MULCONST }>
}END>c
.dump cr
// Program #4, nested
PROGRAM{
DECLPROC foo2
DECLPROC foo3
DECLPROC foo5
DECLPROC main
foo2 PROC:<{
PROGRAM{
DECLPROC foo3
DECLPROC foo4
DECLPROC main
foo3 PROC:<{
PROGRAM{
DECLPROC foo1
DECLPROC foo2
DECLPROC foo3
DECLPROC main
foo1 PROC:<{ MUL INC }>
foo2 PROCINLINE:<{ PLDREF }>
foo3 PROC:<{ CTOS foo2 INLINECALLDICT CTOS 32 PLDU }>
main PROC:<{ 0 PUSHINT }>
}END>c PUSHREF
}>
foo4 PROC:<{ CTOS 8 PLDU }>
main PROC:<{ foo3 CALLDICT foo4 CALLDICT NEWC ROT STUX }>
}END>c PUSHREF
}>
foo3 PROC:<{
PROGRAM{
DECLPROC foo1
DECLPROC foo4
DECLPROC main
foo1 PROC:<{ DUP 137 PUSHINT MUL PAIR }>
foo4 PROC:<{ UNPAIR SWAP DIV }>
main PROC:<{ 70 PUSHINT DIV }>
}END>c PUSHREF
}>
foo5 PROC:<{ foo2 CALLDICT CTOS 8 PLDU 1 RSHIFT# }>
main PROC:<{ foo5 CALLDICT 5 MULCONST }>
}END>c
.dump cr