3
정리하고 싶은 일부 어셈블리가 있습니다. 그것은 모든 대문자, 불일치하는 간격 및 많은 불필요한 개행을 가지고 있습니다.x86_64 어셈블리 미적분기가 있습니까?
x86_64 어셈블리 코드를 지원하는 미화 중 어떤 것을 알고 있습니까?
정리하고 싶은 일부 어셈블리가 있습니다. 그것은 모든 대문자, 불일치하는 간격 및 많은 불필요한 개행을 가지고 있습니다.x86_64 어셈블리 미적분기가 있습니까?
x86_64 어셈블리 코드를 지원하는 미화 중 어떤 것을 알고 있습니까?
어셈블리와 관련된 구체적인 내용은 모르지만 언급 한 내용은 sed를 사용하여 수행 할 수 있습니다.
몇 가지 참고 사항 :
[A-Za-z0-9]+
일치한다. 내 머리 꼭대기에서 나는 다른 문자들을 포함하는 어떤 니모닉도 생각할 수 없다.r(8|9|1[0-5])(b|w|d)
과 일치합니까? (r8b-r15b 제외)[abcd](l|h)|(sp|bp|si|di)l
[er]?([abcd]x|sp|bp|si|di)
일치되는 64 비트 하부 xmm(1[0-5]?|[0,2-9])
: 나는 그것을 모두 내가 this.Thanks를 사용합니다 수행 얻는다 아무것도 찾을 수없는 경우, 좋다
# Replace tabs with spaces, then clean up lines of the form "op reg/imm, ..."
# N.B. without the /I option the match will be case-sensitive
sed 's/\t/ /g' <test.s | sed 's/^\s*\([a-z0-9][a-z0-9]*\)\s\s*\([a-z0-9][a-z0-9]*\)\s*,\s*/\t\1\t\2, /I'
# Lowercase all GPRs and SSE vector registers"
# I have chosen not to use the more compact patterns above in the interest of readability.
... | sed '/\([^a-z]\)\(AL|AH|AX|EAX|RAX|...XMM0|XMM1|...|XMM15\)/\1\L\2/gI'
# Lowercase all instruction mnemonics. More specifically, matches the first thing on every line except when it is followed by a colon.
... | sed '/^\s*\([a-z0-9][a-z0-9]*\)\([^:]\)/\L\1\2/I
! 여전히 대문자로 지시를 남겨 둡니다. 모든 것을 소문자로 바꿀 것입니다. 그러나 레이블은 낙타입니다. –
이것은 조금 미숙한데, 아이디어를 전달하기 위해 최소한의 경우 만 다루지 만 sed의/\ (ADD \ | 또는 \ ADC \ SBB \ | SUB \ | AND \ | XOR \ | CMP \ | AL \ | AH \ | AX \ | EAX \ | RAX \)/\ L \ 1/g '
icecreamsword
그런 일을해야 겠지만 문제는 나는 PUNPCKLWD처럼 보이는 몇 가지 SSE 명령어를 사용하고 있는가? 어딘가에 목록을 가져 와서 구문 분석하여 작동하는 sed 명령을 만들 수 있습니다. 그것을 나중에 시도 할 것이다. –