mirror of
				https://github.com/ton-blockchain/ton
				synced 2025-03-09 15:40:10 +00:00 
			
		
		
		
	* 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>
		
			
				
	
	
		
			70 lines
		
	
	
		
			No EOL
		
	
	
		
			981 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			No EOL
		
	
	
		
			981 B
		
	
	
	
		
			Text
		
	
	
	
	
	
"Disasm.fif" include
 | 
						|
"Asm.fif" include
 | 
						|
 | 
						|
<{
 | 
						|
  IF:<{
 | 
						|
    123456789 PUSHINT
 | 
						|
  }>ELSE<{
 | 
						|
    x{12345} PUSHSLICE
 | 
						|
  }>
 | 
						|
  WHILE:<{ ADD }>DO<{
 | 
						|
    10 PUSHINT REPEAT:<{
 | 
						|
      CONT:<{ NOP }>
 | 
						|
      CONT:<{ }>
 | 
						|
    }>
 | 
						|
  }>
 | 
						|
}>s
 | 
						|
disasm cr
 | 
						|
 | 
						|
x{007A7} disasm cr // Cannot disassemble: x{7}
 | 
						|
 | 
						|
<{
 | 
						|
  SWAP
 | 
						|
  s0 s10 XCHG s0 100 s() XCHG
 | 
						|
  s5 PUSH s6 POP
 | 
						|
  s4 s10 PUSH2
 | 
						|
  5 10 BLKSWAP
 | 
						|
  c4 PUSH c5 POP
 | 
						|
}>s dup dup
 | 
						|
disasm cr
 | 
						|
std-disasm disasm cr
 | 
						|
stack-disasm show-vm-code disasm cr
 | 
						|
hide-vm-code
 | 
						|
 | 
						|
<{
 | 
						|
  1 INT 123456789 INT 123456789123456789123456789 INT
 | 
						|
  <b x{1234} s, b> PUSHREF
 | 
						|
  x{567} PUSHSLICE
 | 
						|
  10 ADDCONST
 | 
						|
  DIV DIVR DIVC
 | 
						|
  RSHIFTC 10 RSHIFTC#
 | 
						|
  20 MODPOW2#
 | 
						|
  30 MULRSHIFTR#
 | 
						|
  LSHIFTDIVC 40 LSHIFT#DIVR
 | 
						|
}>s
 | 
						|
disasm cr
 | 
						|
 | 
						|
PROGRAM{
 | 
						|
  11 DECLMETHOD foo1
 | 
						|
  12 DECLMETHOD foo2
 | 
						|
  13 DECLMETHOD foo3
 | 
						|
  DECLPROC main
 | 
						|
  foo1 PROC:<{
 | 
						|
    123 ADDCONST
 | 
						|
  }>
 | 
						|
  foo2 PROC:<{
 | 
						|
    OVER
 | 
						|
    5 EQINT
 | 
						|
    IFJMP:<{
 | 
						|
      NIP
 | 
						|
    }>
 | 
						|
    MUL
 | 
						|
  }>
 | 
						|
  foo3 PROC:<{
 | 
						|
    ADD
 | 
						|
    foo2 CALLDICT
 | 
						|
  }>
 | 
						|
  main PROC:<{
 | 
						|
  }>
 | 
						|
}END>s
 | 
						|
disasm |