mirror of
https://github.com/ton-blockchain/ton
synced 2025-02-13 03:32:22 +00:00
93 lines
2 KiB
Text
93 lines
2 KiB
Text
|
"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
|