| 
									
										
										
										
											2010-02-02 07:46:17 -05:00
										 |  |  | USING: accessors kernel math math.parser prettyprint sequences | 
					
						
							|  |  |  | splitting tools.memory ;
 | 
					
						
							| 
									
										
										
										
											2009-06-22 17:06:07 -04:00
										 |  |  | IN: tools.disassembler.utils | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-23 22:48:38 -05:00
										 |  |  | : 0x- ( str -- str' ) "0x" prepend ;
 | 
					
						
							| 
									
										
										
										
											2009-06-22 17:06:07 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : complete-address ( n seq -- str )
 | 
					
						
							| 
									
										
										
										
											2010-02-02 07:46:17 -05:00
										 |  |  |     [ nip owner>> unparse-short ] [ entry-point>> - ] 2bi
 | 
					
						
							| 
									
										
										
										
											2011-11-23 22:48:38 -05:00
										 |  |  |     [ >hex 0x- " + " glue ] unless-zero ;
 | 
					
						
							| 
									
										
										
										
											2009-06-22 17:06:07 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-02 07:46:17 -05:00
										 |  |  | : search-xt ( addr -- str/f )
 | 
					
						
							|  |  |  |     dup lookup-return-address | 
					
						
							|  |  |  |     dup [ complete-address ] [ 2drop f ] if ;
 | 
					
						
							| 
									
										
										
										
											2009-06-22 17:06:07 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : resolve-xt ( str -- str' )
 | 
					
						
							| 
									
										
										
										
											2011-11-23 22:48:38 -05:00
										 |  |  |     [ 0x- ] [ hex> ] bi
 | 
					
						
							| 
									
										
										
										
											2009-06-22 17:06:07 -04:00
										 |  |  |     [ search-xt [ " (" ")" surround append ] when* ] when* ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : resolve-call ( str -- str' )
 | 
					
						
							|  |  |  |     "0x" split1-last [ resolve-xt "0x" glue ] when* ;
 |