2012-02-18 3 views
13

핫스팟을 사용하여 -XX:+PrintAssembly을 사용할 때마다 저를 괴롭 히며 AT & T 구문을 읽어야합니다.Hotspot7 hsdis PrintAssembly Intel 구문

인텔 구문을 사용하는 방법이 있습니까?

+0

에서 나열 같은 사람은? –

+0

@Pavan 모든 OSes에 대해 하나의 바이너리가 있다는 것을 알았으므로 크로스 플랫폼을 작동시킬 수 있기를 희망했습니다. 대부분 openSUSE와 Windows. 슬프게도 당신의 대답이 지적한대로 - 내가 컴파일하는 동안 그런 옵션을 통과 할 수 있다면, 나는 그것을 할 수있는 더 좋은 방법이 있는지 의심 스럽다. 그것을 시도 할 것입니다. – Voo

+0

윈도우의 경우 기본적으로 인텔 구문을 가져와야합니다! –

답변

17

당신이 필요가 DIS-asm.h와 binutils의 코드에 몇 가지 옵션을 구문 분석하는 것입니다

(나는 또한 선호) 인텔 어셈블러에 관한

너무

같이 쉼표로 다음

-XX:PrintAssemblyOptions=intel

당신이 옵션을 결합해야하는 경우 그것을 할 추가 hsdis 옵션으로 인식되지

-XX:PrintAssemblyOptions=intel,hsdis-help

아무것도가 디스어셈블러에 공급되며,이 옵션은 방법, 당신이 시스템에 실행함으로써 당신이

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

와우 그게 좋네! 그들은 실제로 어딘가에 언급 할 수 있지만 - 심지어 'PrintAssemblyOptions'이어야한다는 것을 알고 있어도 Google에서 그 문서를 찾을 수없는 것 같습니다. – Voo

2

나는 이것을 수행 할 기존 방법이 없다고 생각합니다. 그러나 이것이 제가 발견 한 것입니다. Herehsdis의 출처입니다. -masm=intel을 GCC에 전달하여 Makefile을 변경할 수 있습니다. 그리고 그것이 작동한다면, 지금부터 +PrintAssembly은 인텔 구문 어셈블리 출력을 시작해야합니다.

여기 소스를 얻으려면 step by step procedure이며, 마지막으로 분해 작업을 수행하는 사람인 hsdis-arch.so을 얻으십시오!

나는 이것을 직접 시도하지 않았습니다. 나는 당신이이 작업을 :)

아무것도 작동하지 않는 경우,이와 편안해야 얻을하고자하는 AT&T Syntax :

+0

고맙지 만, 정확히 어디에'-masm = intel'을 makefile에 추가하겠습니까? 방금'CFLAGS + = -masm = intel'을했는데 트릭을하지 않습니다. – Voo

+1

'CFLAGS'는 적절한 곳이지만, 왜 당신을 위해 일하지 않는지 잘 모르겠습니다. 'hsdis-arch.so'가 생성됩니까? 이 디버그 옵션을 추가 한 후에 차이가 있습니까? –

+0

so 파일은 정상적으로 생성되었지만 출력이 없으면 (즉, AT & T) 오류 메시지도 표시되지 않습니다. 그리고 네, 중요한 일이라면 내 경로에 설치해야합니까? – Voo