2012-02-18 10 views
13

Me molesta cada vez que uso -XX:+PrintAssembly con Hotspot y tengo que leer la horrible sintaxis de AT & T.Hotspot7 hsdis PrintAssembly Intel Sintaxis

¿Hay alguna manera de decirle que use la sintaxis Intel?

+0

Por cierto, ¿Qué sistema está ejecutando en? –

+0

@Pavan Como entendí, había un binario para todos los sistemas operativos, así que esperaba poder trabajar de manera cruzada. Mayormente openSUSE y Windows. Tristemente, como indica tu respuesta, si puedo pasar tal opción mientras compilo, dudo que haya una mejor manera de hacerlo. Intentaremos eso. – Voo

+0

Para Windows, ¿debería obtener la sintaxis de Intel de forma predeterminada? –

Respuesta

17

Todo lo que necesita es analizar algunas opciones en el código dis-asm.h y binutils

para Intel Asm (que yo también prefiero) sólo tiene que añadir el siguiente

-XX:PrintAssemblyOptions=intel

Si es necesario combinar opciones lo hacen con comas al igual que

-XX:PrintAssemblyOptions=intel,hsdis-help

Cualquier cosa no se reconoce como una opción hsdis se alimenta al desensamblador, estas opciones son las mismas que se ven lista de los

objdump --help 

... <SNIP A lot of --help text %<> ... 
The following i386/x86-64 specific disassembler options are supported for use 
with the -M switch (multiple options should be separated by commas): 
    x86-64  Disassemble in 64bit mode 
    i386  Disassemble in 32bit mode 
    i8086  Disassemble in 16bit mode 
    att   Display instruction in AT&T syntax 
    intel  Display instruction in Intel syntax 
    att-mnemonic 
       Display instruction in AT&T mnemonic 
    intel-mnemonic 
       Display instruction in Intel mnemonic 
    addr64  Assume 64bit address size 
    addr32  Assume 32bit address size 
    addr16  Assume 16bit address size 
    data32  Assume 32bit data size 
    data16  Assume 16bit data size 
    suffix  Always display instruction suffix in AT&T syntax 
Report bugs to <http://www.sourceware.org/bugzilla/>. 
+1

¡Guau, eso es genial! Aunque realmente podrían mencionarlo en alguna parte, incluso sabiendo que debería ser 'PrintAssemblyOptions', parece que no puedo encontrar documentación sobre eso con google. – Voo

2

No creo que haya ninguna forma de hacerlo. Pero esto es lo que he encontrado: Here es la fuente de hsdis. Puede cambiar el Makefile pasando -masm=intel a GCC. Y si funciona, de ahora en adelante, +PrintAssembly debería comenzar a producir el ensamblaje de sintaxis de Intel.

Aquí está el step by step procedure para obtener la fuente, construir y finalmente obtener el hsdis-arch.so que es el que hace el trabajo de desmontaje!

No he probado esto por mi cuenta. Me gustaría que conseguir que esto funcione :)

Si nada funciona, esto debería hacer que se sienta cómodo con AT&T Syntax :)

+0

Gracias, pero ¿dónde exactamente agregaría '-masm = intel' en el archivo MAKE? Acabo de hacer 'CFLAGS + = -masm = intel' pero eso no funciona. – Voo

+1

'CFLAGS' es el lugar correcto, pero no estoy seguro de por qué no funciona para usted. ¿Se está generando el 'hsdis-arch.so'? ¿Alguna diferencia después de agregar esta opción de depuración? –

+0

El archivo so se genera muy bien, pero el resultado es el mismo que sin él (es decir, todavía AT & T) - tampoco hay mensajes de error. Y sí, ¿tengo nasm instalado en mi camino si eso es importante? – Voo

Cuestiones relacionadas