пытаюсь откомпилить 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 начинает понимать эту связку. Как узнать что ему надо?