From 39745ee86c406f184733ca6f9dfa5d859e1a229b Mon Sep 17 00:00:00 2001 From: Andrey Tvorozhkov Date: Wed, 10 Jan 2024 13:04:42 +0300 Subject: [PATCH] Add disasm for cell with lib support, add PUSHREFSLICE lib disasm support, allow to load lib in PUSHCONT --- crypto/fift/lib/Disasm.fif | 37 ++++++++++++++++++++++---------- crypto/test/fift/disasm-libs.fif | 14 +++++++++--- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/crypto/fift/lib/Disasm.fif b/crypto/fift/lib/Disasm.fif index 469871e3..b3623d00 100644 --- a/crypto/fift/lib/Disasm.fif +++ b/crypto/fift/lib/Disasm.fif @@ -2,11 +2,25 @@ library TVM_Disasm // simple TVM Disassembler "Lists.fif" include +variable @vmlibs dictnew @vmlibs ! +{ 256 u@ dup @vmlibs @ 256 udict@ } : vmlib@ +{ 8 u@+ swap 2 = } : libspecial? + variable 'disasm { 'disasm @ execute } : disasm // disassemble a slice +{ { space 0 over count 2- { 1+ 2dup [] type .", " } swap times 1+ [] type } { drop } cond } : std-show-op { 0 over count 1- { 1+ 2dup [] type space } swap times drop first .atom } : stk-show-op +{ ."// LIB: " swap X. cr ref@ spec PUSHREF - BLESS - EXECUTE }>c spec PUSHREFSLICE +}>c spec disasmc +