objdump -d
를 사용하면 어셈블리(Intel 구문 또는 AT&T 구문), 이진 opcode 인코딩 및 주소 번호가 출력된다는 것을 알았습니다 . 내 경우에는 디스어셈블러가 AT&T 어셈블리만 출력하기를 원합니다. 개체 파일에서 어셈블리 파일로 어셈블리를 복사하기 위해 처음 18-24자(예, 계산되지 않음)를 제거하는 것이 귀찮기 때문입니다.
답변1
누구든지 도와줄 수 있나요?
예! man objdump
할 수 있는. AT&T( /AT&T enter)를 찾아보세요! 그 다음에,--no-addresses
~해야 한다일하다.
-M
이 옵션을 사용하여 귀하의 경우 선호하는 어셈블러 구문 모드를 전달할 수 있습니다 -M att
.
좀 더 다재다능한 디스어셈블러를 원한다면 사용해 보십시오 radare2
(익숙해지는 데 30분 정도 걸리겠지만).
답변2
--no-addresses
에 언급된 징후마커스 뮐러의 답변Binutils 2.35에서 도입되었습니다. 이전 버전 objdump
(Ubuntu 20.04 이하, RHEL 8 이하)의 경우 이전 디스어셈블리 출력(고정 너비 주소 및 인코딩 지침 없음)으로 전환한 다음 출력을 잘라내면 동일한 결과를 얻을 수 있습니다. 64비트 플랫폼:
objdump -d --prefix-addresses ... | cut -c20-