Я сейчас изменяю md-файл gcc для цели mips (el).Версия gcc src - 4.6.0.
Я хочу изменить генерацию insn с расширением знака.
Первоначально, mips использует команду "lb
" / "lh
" длярасширить байт / половину.
, но в моем целевом процессоре он не имеет "lb
" и "lh
", он поддерживает только "lbu
" и "lhu
".поэтому я должен сгенерировать такие инструкции для реализации sign-ext.
например
lb% 0,% 1
стать:
lbu% 0,% 1%% 0,% 0,24сра% 0,% 0,24
аналогично:
lh% 0,% 1
становится:
lhu% 0,% 1srl% 0,% 0,16сра% 0,% 0,16
Но, в оригинальном файле "md" два из них - это один шаблон, он использует макрос для генерации инструкции lb / lh:
"l<SHORT:size>"
<SHORT:size> may be "b" or "h" --> "lb" or "lh"
, но я хочу получить"24" из "b";получить "16" форму "ч".Как мне этого добиться?