2012-02-18 21 views
13

Nó làm phiền tôi mỗi khi tôi sử dụng -XX:+PrintAssembly với Điểm phát sóng và phải đọc cú pháp AT & T khủng khiếp.Hotspot7 hsdis PrintAssembly Intel Syntax

Có cách nào để yêu cầu nó sử dụng cú pháp của Intel không?

+0

By the way, Những hệ thống bạn đang chạy trên? –

+0

@Pavan Như tôi đã hiểu có một nhị phân cho tất cả các hệ điều hành vì vậy tôi hy vọng tôi có thể có được một cách làm việc crossplatform. Chủ yếu là openSUSE và Windows. Đáng buồn thay như câu trả lời của bạn cho biết - nếu tôi có thể vượt qua một lựa chọn như vậy trong khi biên soạn, tôi nghi ngờ có cách nào tốt hơn để làm điều đó. Sẽ thử điều đó. – Voo

+0

Đối với cửa sổ, bạn nên nhận cú pháp intel theo mặc định? –

Trả lời

17

Tất cả bạn cần là để phân tích một số tùy chọn vào dis-asm.h và binutils đang

Đối với intel Asm (mà tôi cũng thích) chỉ cần thêm những điều sau

-XX:PrintAssemblyOptions=intel

Nếu bạn cần phải kết hợp tùy chọn làm điều đó bằng dấu phẩy như vậy

-XX:PrintAssemblyOptions=intel,hsdis-help

Bất cứ điều gì không được coi là một lựa chọn hsdis sẽ được đưa đến bộ phận phân tách, các tùy chọn này là những người mà bạn thấy được liệt kê từ

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

Thật tuyệt vời! Mặc dù họ thực sự có thể đề cập đến một nơi nào đó - thậm chí biết rằng nó nên là 'PrintAssemblyOptions' Tôi dường như không thể tìm thấy bất kỳ tài liệu nào về điều đó với google. – Voo

2

Tôi không nghĩ rằng có bất kỳ cách nào tồn tại để thực hiện việc này. Nhưng đây là những gì tôi đã tìm thấy- Here là nguồn của hsdis. Bạn có thể thay đổi Makefile bằng cách chuyển -masm=intel tới GCC. Và nếu nó hoạt động, từ bây giờ trở đi, +PrintAssembly sẽ bắt đầu xuất ra lắp ráp cú pháp của Intel.

Dưới đây là step by step procedure để lấy nguồn, xây dựng và cuối cùng nhận được hsdis-arch.so là công cụ thực hiện công việc tháo gỡ!

Tôi chưa tự mình thử. Chúc các bạn có được điều này để làm việc :)

Nếu không có gì làm việc, điều này sẽ làm cho bạn cảm thấy thoải mái với AT&T Syntax :)

+0

Cảm ơn, nhưng chính xác thì tôi sẽ thêm '-masm = intel' vào makefile ở đâu? Tôi chỉ làm 'CFLAGS + = -masm = intel' nhưng điều đó không làm được điều này. – Voo

+1

'CFLAGS' là đúng nơi, nhưng tôi không chắc tại sao nó không hoạt động cho bạn. 'Hsdis-arch.so' có được tạo ra không? Bất kỳ sự khác biệt nào trong nó sau khi thêm tùy chọn gỡ lỗi này? –

+0

Tập tin như vậy được tạo ra tốt, nhưng đầu ra là giống như không có nó (tức là vẫn còn AT & T) - cũng không có thông báo lỗi. Và có, tôi đã cài đặt nasm trong con đường của tôi nếu đó là quan trọng? – Voo