Создать правильный код.
romikb 31 октября, 2004 - 12:55.Есть такой код.
void *hw[0xffff] = {
, func2,
};
long mem[0xffff];
void func2(long addr) __attribute__((regparm(1)));
void func2(long addr)
{
mem[addr] = 0;
}
void func1(long addr) __attribute__((regparm(1)));
void func1(long addr)
{
goto *hw[addr];
}
Проблема в том что компилятор создает следующий код
func1:
push ebx
код для GOT
jmp
нужная часть
т.е. лишние 4 байта кладутся в стек, из за чего прога рушиться. Можно ли как то это исправить, может в новой версии gcc это исправят(та что доступна с haiku–os у меня падает с internal compiler error)
mingw в винде создает правильный код из одной строчи
jmp
Отправить комментарий