2016-09-19 7 views

ответ

7

Я не знаю ничего конкретного для сборки, но то, о чем вы упоминали, может быть выполнено с помощью sed.

Пару вещей отметить:

  • Мнемоника подбираются регулярное выражение [A-Za-z0-9]+. С головы до ног я не могу думать о какой-либо мнемонике, которая включает в себя других персонажей.
  • Верхняя половина GPR соответствует r(8|9|1[0-5])(b|w|d)?
  • Байт GPRS (за исключением R8b-r15b) подбираются [abcd](l|h)|(sp|bp|si|di)l
  • 16-, 32- и 64-разрядные младшие 8 GPRs подбираются [er]?([abcd]x|sp|bp|si|di)
  • регистры SSE могут быть сопоставлены с регулярным выражением xmm(1[0-5]?|[0,2-9])

Например:

# 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 
+0

это хорошо, если бы я не нашел ничего, что получает все это сделано, я буду использовать this.Thanks! Все еще оставляет меня с прописными инструкциями, я бы просто сделал все, но ярлыки - camelCase. –

+0

Это немного грубо, и я рассказываю только о некоторых минимальных случаях, чтобы передать идею, но она будет делать то, что вы хотите: sed 's/\ (ADD \ | OR \ | ADC \ | SBB \ | SUB \ | AND \ | XOR \ | CMP \ | AL \ | AH \ | AX \ | EAX \ | RAX \)/\ L \ 1/g ' icecreamsword

+0

Думаю, мне придется что-то делать, но проблема Я использую несколько десятков инструкций SSE, которые выглядят как PUNPCKLWD. Вероятно, вы можете получить список где-нибудь и проанализировать его, чтобы создать команду sed, которая работает. Попробуем это позже. –

 Смежные вопросы

  • Нет связанных вопросов^_^