Сообщение от
EARL
Еще не делал. Однако это позволит делать inline подстановки на асме прямо в код Си. Можно даже дизассемблер туда пристроить
насколько я знаю есть binutils с поддержкой z80
сейчас буду искать
---------- Post added at 20:56 ---------- Previous post was at 19:55 ----------
В общем так.
1. Собрал binutils-2.22.tar.bz2
./configure --prefix=$PREFIX --target=z80-unknown-coff --disable-static --with-gnu-ld --with-gnu-as --enable-install-libbfd --disable-werror
(Опции нагло взяты из дебианоского скрипта)
2. Попытался откомпилировать программу на ассемблере, полученную clang'ом.
НИ ФИГА НЕ ВЫШЛО!
Причина: Неверно работает кодогенератор:
Исходный код.
Код:
int a;
int b;
int c;
int main(int argc, char* argv[]){
c = a+b;
return(0);
}
Полученный ассемблер (оптимизация -Os)
Код:
.file "test.c"
.text
.globl main
.type main,@function
main:
push ix
push de
push bc
ld ix, 0
add ix, sp
ld sp, ix
ld hl, b
inc hl
ld b, (hl)
ld a, (b)
ld c, a
ld hl, a
inc hl
ld d, (hl)
ld a, (a)
ld e, a
ld h, b
ld l, c
add hl, de
ld b, h
ld c, l
ld hl, c
inc hl
ld (hl), b
ld a, c
ld (c), a
ld hl, 0
pop bc
pop de
pop ix
ret
.tmp0:
.size main, .tmp0-main
.type a,@object
.comm a,2,1
.type b,@object
.comm b,2,1
.type c,@object
.comm c,2,1
Обрати внимание на команды:
Код:
ld hl, b
...
ld hl, a
...
ld a, (a)
Без оптимизации картина та же.
Надо бы привести генерируемые команды к стандарту, пониемому бинутилсами.
тогда будем тестить дальше, уже на реале.