tools.disassembler.udis: fix careless <c-object> usage
parent
ed21047b78
commit
85bd9209f9
|
@ -1,6 +1,4 @@
|
||||||
IN: tools.disassembler.tests
|
IN: tools.disassembler.tests
|
||||||
USING: math classes.tuple prettyprint.custom
|
USING: kernel fry vocabs tools.disassembler tools.test sequences ;
|
||||||
tools.disassembler tools.test strings ;
|
|
||||||
|
|
||||||
[ ] [ \ + disassemble ] unit-test
|
"math" words [ [ [ ] ] dip '[ _ disassemble ] unit-test ] each
|
||||||
[ ] [ M\ string pprint* disassemble ] unit-test
|
|
|
@ -3,7 +3,7 @@
|
||||||
USING: tools.disassembler namespaces combinators
|
USING: tools.disassembler namespaces combinators
|
||||||
alien alien.syntax alien.c-types lexer parser kernel
|
alien alien.syntax alien.c-types lexer parser kernel
|
||||||
sequences layouts math math.order alien.libraries
|
sequences layouts math math.order alien.libraries
|
||||||
math.parser system make fry arrays ;
|
math.parser system make fry arrays libc destructors ;
|
||||||
IN: tools.disassembler.udis
|
IN: tools.disassembler.udis
|
||||||
|
|
||||||
<<
|
<<
|
||||||
|
@ -47,11 +47,14 @@ FUNCTION: uint ud_insn_len ( ud* u ) ;
|
||||||
FUNCTION: char* ud_lookup_mnemonic ( int c ) ;
|
FUNCTION: char* ud_lookup_mnemonic ( int c ) ;
|
||||||
|
|
||||||
: <ud> ( -- ud )
|
: <ud> ( -- ud )
|
||||||
"ud" <c-object>
|
"ud" malloc-object &free
|
||||||
dup ud_init
|
dup ud_init
|
||||||
dup cell-bits ud_set_mode
|
dup cell-bits ud_set_mode
|
||||||
dup UD_SYN_INTEL ud_set_syntax ;
|
dup UD_SYN_INTEL ud_set_syntax ;
|
||||||
|
|
||||||
|
: with-ud ( quot: ( ud -- ) -- )
|
||||||
|
[ [ <ud> ] dip call ] with-destructors ; inline
|
||||||
|
|
||||||
SINGLETON: udis-disassembler
|
SINGLETON: udis-disassembler
|
||||||
|
|
||||||
: buf/len ( from to -- buf len ) [ drop <alien> ] [ swap - ] 2bi ;
|
: buf/len ( from to -- buf len ) [ drop <alien> ] [ swap - ] 2bi ;
|
||||||
|
@ -82,10 +85,12 @@ SINGLETON: udis-disassembler
|
||||||
] { } make ;
|
] { } make ;
|
||||||
|
|
||||||
M: udis-disassembler disassemble* ( from to -- buffer )
|
M: udis-disassembler disassemble* ( from to -- buffer )
|
||||||
[ <ud> ] 2dip {
|
'[
|
||||||
|
_ _
|
||||||
[ drop ud_set_pc ]
|
[ drop ud_set_pc ]
|
||||||
[ buf/len ud_set_input_buffer ]
|
[ buf/len ud_set_input_buffer ]
|
||||||
[ 2drop (disassemble) format-disassembly ]
|
[ 2drop (disassemble) format-disassembly ]
|
||||||
} 3cleave ;
|
3tri
|
||||||
|
] with-ud ;
|
||||||
|
|
||||||
udis-disassembler disassembler-backend set-global
|
udis-disassembler disassembler-backend set-global
|
||||||
|
|
Loading…
Reference in New Issue