핫스팟을 사용하여 -XX:+PrintAssembly
을 사용할 때마다 저를 괴롭 히며 AT & T 구문을 읽어야합니다.Hotspot7 hsdis PrintAssembly Intel 구문
인텔 구문을 사용하는 방법이 있습니까?
핫스팟을 사용하여 -XX:+PrintAssembly
을 사용할 때마다 저를 괴롭 히며 AT & T 구문을 읽어야합니다.Hotspot7 hsdis PrintAssembly Intel 구문
인텔 구문을 사용하는 방법이 있습니까?
당신이 필요가 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/>.
와우 그게 좋네! 그들은 실제로 어딘가에 언급 할 수 있지만 - 심지어 'PrintAssemblyOptions'이어야한다는 것을 알고 있어도 Google에서 그 문서를 찾을 수없는 것 같습니다. – Voo
나는 이것을 수행 할 기존 방법이 없다고 생각합니다. 그러나 이것이 제가 발견 한 것입니다. Here은 hsdis
의 출처입니다. -masm=intel
을 GCC에 전달하여 Makefile
을 변경할 수 있습니다. 그리고 그것이 작동한다면, 지금부터 +PrintAssembly
은 인텔 구문 어셈블리 출력을 시작해야합니다.
여기 소스를 얻으려면 step by step procedure이며, 마지막으로 분해 작업을 수행하는 사람인 hsdis-arch.so
을 얻으십시오!
나는 이것을 직접 시도하지 않았습니다. 나는 당신이이 작업을 :)
아무것도 작동하지 않는 경우,이와 편안해야 얻을하고자하는 AT&T Syntax :
고맙지 만, 정확히 어디에'-masm = intel'을 makefile에 추가하겠습니까? 방금'CFLAGS + = -masm = intel'을했는데 트릭을하지 않습니다. – Voo
'CFLAGS'는 적절한 곳이지만, 왜 당신을 위해 일하지 않는지 잘 모르겠습니다. 'hsdis-arch.so'가 생성됩니까? 이 디버그 옵션을 추가 한 후에 차이가 있습니까? –
so 파일은 정상적으로 생성되었지만 출력이 없으면 (즉, AT & T) 오류 메시지도 표시되지 않습니다. 그리고 네, 중요한 일이라면 내 경로에 설치해야합니까? – Voo
에서 나열 같은 사람은? –
@Pavan 모든 OSes에 대해 하나의 바이너리가 있다는 것을 알았으므로 크로스 플랫폼을 작동시킬 수 있기를 희망했습니다. 대부분 openSUSE와 Windows. 슬프게도 당신의 대답이 지적한대로 - 내가 컴파일하는 동안 그런 옵션을 통과 할 수 있다면, 나는 그것을 할 수있는 더 좋은 방법이 있는지 의심 스럽다. 그것을 시도 할 것입니다. – Voo
윈도우의 경우 기본적으로 인텔 구문을 가져와야합니다! –