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