@neauoire : Stack machine disassemblers are often simpler than a register machine disassembler because of how many instructions are 0-operand. The instruction set is very regular!
Check out the disassembler for the 4stack CPU (it is packaged up in the Simulator tar file).
https://bernd-paysan.de/4stack.html
Now, if you want to go further than this, and are looking to disassemble "higher level" UXN back into a sequence of named function calls, you would need some kind of "symbol table" associating function name with address. Which starts looking a lot like a #Forth dictionary. You might want to look at how Forth decompilers work (see pg. 105-110 of http://forth.org/OffeteStore/1013_eForthAndZen.pdf). A Forth decompiler takes <1K and is easily run on target.