]> gitweb.factorcode.org Git - factor.git/commitdiff
tools.disassembler: some cleanup
authorJohn Benediktsson <mrjbq7@gmail.com>
Thu, 12 Jan 2023 16:26:18 +0000 (08:26 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 12 Jan 2023 16:26:18 +0000 (08:26 -0800)
basis/tools/disassembler/capstone/capstone.factor
basis/tools/disassembler/udis/udis.factor

index 54944b5314c369553d25657a5d022f8073e3488e..2d6adf01167496e781753298eadc73431a0e4009 100644 (file)
@@ -128,10 +128,13 @@ SPECIALIZED-ARRAY: cs_insn
 
 <PRIVATE
 
+: buf/len/start ( from to -- buf len from )
+    [ drop <alien> ] [ swap - ] [ drop ] 2tri ;
+
 : make-insn ( cs_insn -- seq )
     {
         [ address>> ]
-        [ [ bytes>> ] [ size>> ] bi head bytes>hex-string ]
+        [ [ bytes>> ] [ size>> ] bi head-slice bytes>hex-string ]
         [ mnemonic>> alien>native-string ]
         [ op_str>> alien>native-string " " glue ]
     } cleave 3array ;
@@ -149,7 +152,6 @@ PRIVATE>
 SINGLETON: capstone-disassembler
 
 M: capstone-disassembler disassemble*
-    [ [ <alien> ] keep ] dip over [ - ] dip
-    [ make-disassembly write-disassembly ] with-code-blocks ;
+    [ buf/len/start make-disassembly write-disassembly ] with-code-blocks ;
 
 capstone-disassembler disassembler-backend set-global
index 10f6910147978385bfb4ed9f2d7d8a2db8de01f9..b2a087ca8cf772b7241cc8b684817f8c177dfc58 100644 (file)
@@ -59,16 +59,6 @@ SINGLETON: udis-disassembler
 
 : buf/len ( from to -- buf len ) [ drop <alien> ] [ swap - ] 2bi ;
 
-: write-disassembly ( lines -- )
-    dup [ second length ] [ max ] map-reduce [
-        '[
-            [ first >hex cell 2 * CHAR: 0 pad-head % ": " % ]
-            [ second _ CHAR: \s pad-tail % "  " % ]
-            [ third [ % ] [ resolve-call ] bi ]
-            tri CHAR: \n ,
-        ] each
-    ] "" make write ;
-
 : make-disassembly ( ud -- lines )
     [
         [ dup ud_disassemble 0 = ] [