пытаюсь откомпилить cacaovm под i386-qnx
там есть 1 несчастный ассемблерный файл, в нем используется такой синтаксис.
16ти разрядные регистры иногда пишутся без знака процент:
mov sp,bp
а иногда со знаком процента:
and $0xfcff,%ax
при этом тут еще видно, что шестнадцатиричные числа предваряются префиксом 0x, при в конце числа h не ставится
32-разрядные регистры пишутся со знаком процента:
push %ebx
Пишется сначала откуда, потом куда, числа пишутся со знаком доллара:
sub $12, %esp
в файле используются обычные C-style инклуды сишных хедеров:
#include «file.h»
Все это в одном файле, одновременно. Я погуглил - похоже это какая-то помесь интел и ат&т синтаксиса. gcc это не понимает. Ни gcc для целевой архитектуры, ни родной amd64 что-нинаесть-убунтовский. Ругаются одинаково, при этом от сишных инклудов им вообще плохеет.
Например, на mov sp, bp они ругаются «Error: too many memory references for `mov'»
когда я собираю под линукс «родным» autotools, то gcc совершенно непонятным образом компилит его, но я пробовал запускать ту же самую команду из консоли - не прокатывает. Это наводит на мысль, что libtool ставит каким-то образом окружение, что gcc начинает понимать эту связку. Как узнать что ему надо?