Ассемблерный код, сгенерированный gcc, приводит к фатальной ошибке при сборке ARM-ассемблером

Я узнал, что ARM-компилятор armcc V5.05 не компилируется uint64_t правильно в ассемблерный код. Он использует только один регистр вместо двух, поэтому результат усекается до 32 бит (хотя компилятор не жалуется). В качестве обходного пути я использовал компилятор gcc, поместил сгенерированный ассемблерный код в отдельный файл asm и запустил ассемблер ARM. Не удалось создать цель из-за ошибки:

Эта комбинация регистров приводит к непредсказуемому поведению

что действительно смертельно, я полагаю. После оператора C- "return" в конце функции gcc вставляет нарушающее SUB SP,R11,#0 или же ADD SP,R11,#0 команда перед командой ASM-return BX LR, Это правда с или без uint64_t, Могу ли я положиться на gcc или это ошибка в armcc/armasm?

0 ответов

Другие вопросы по тегам