-
Notifications
You must be signed in to change notification settings - Fork 749
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[llvm-mc] Add --hex to disassemble hex bytes
`--disassemble`/`--cdis` parses input bytes as decimal, 0bbin, 0ooct, or 0xhex. While the hexadecimal digit form is most commonly used, requiring a 0x prefix for each byte (`0x48 0x29 0xc3`) is cumbersome. Tools like xxd -p and rz-asm use a plain hex dump form without the 0x prefix or space separator. This patch adds --hex to disassemble such hex bytes with optional whitespace. ``` % rz-asm -a x86 -b 64 -d 4829c34829c4 sub rbx, rax sub rsp, rax % llvm-mc -triple=x86_64 --cdis --hex --output-asm-variant=1 <<< 4829c34829c4 .text sub rbx, rax sub rsp, rax ``` Pull Request: llvm/llvm-project#119992
- Loading branch information
Showing
5 changed files
with
98 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# RUN: rm -rf %t && split-file %s %t && cd %t | ||
# RUN: llvm-mc -triple=x86_64 --disassemble --hex a.s | FileCheck %s | ||
# RUN: llvm-mc -triple=x86_64 --disassemble --hex decode1.s 2>&1 | FileCheck %s --check-prefix=DECODE1 --implicit-check-not=warning: | ||
# RUN: not llvm-mc -triple=x86_64 --disassemble --hex decode2.s 2>&1 | FileCheck %s --check-prefix=DECODE2 --implicit-check-not=warning: | ||
# RUN: not llvm-mc -triple=x86_64 --disassemble --hex err1.s 2>&1 | FileCheck %s --check-prefix=ERR1 --implicit-check-not=error: | ||
# RUN: not llvm-mc -triple=x86_64 --disassemble --hex err2.s 2>&1 | FileCheck %s --check-prefix=ERR2 --implicit-check-not=error: | ||
|
||
#--- a.s | ||
4883ec08 31 # comment | ||
# comment | ||
ed4829 c390 | ||
[c3c3][4829c3] | ||
[90] | ||
|
||
# CHECK: subq $8, %rsp | ||
# CHECK-NEXT: xorl %ebp, %ebp | ||
# CHECK-NEXT: subq %rax, %rbx | ||
# CHECK-NEXT: nop | ||
# CHECK-NEXT: retq | ||
# CHECK-NEXT: retq | ||
# CHECK-NEXT: subq %rax, %rbx | ||
# CHECK-NEXT: nop | ||
# CHECK-EMPTY: | ||
|
||
#--- decode1.s | ||
4889 | ||
|
||
# DECODE1: 1:1: warning: invalid instruction encoding | ||
|
||
#--- decode2.s | ||
[4889][4889] [4889]4889c3 | ||
[4889] | ||
|
||
# DECODE2: 1:2: warning: invalid instruction encoding | ||
# DECODE2: 1:8: warning: invalid instruction encoding | ||
# DECODE2: 1:15: warning: invalid instruction encoding | ||
# DECODE2: 2:3: warning: invalid instruction encoding | ||
|
||
#--- err1.s | ||
0x31ed | ||
0xcc | ||
g0 | ||
|
||
# ERR1: 1:1: error: invalid input token | ||
# ERR1: 2:1: error: invalid input token | ||
# ERR1: 3:1: error: invalid input token | ||
# ERR1: xorl %ebp, %ebp | ||
# ERR1-NEXT: int3 | ||
# ERR1-EMPTY: | ||
|
||
#--- err2.s | ||
g | ||
90c | ||
cc | ||
c | ||
|
||
# ERR2: 1:1: error: expected two hex digits | ||
# ERR2: 2:3: error: expected two hex digits | ||
# ERR2: 4:1: error: expected two hex digits | ||
# ERR2: nop | ||
# ERR2-NEXT: int3 | ||
# ERR2-EMPTY: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters