эта конкретная проблема занимает много выслеживая, из-за большого количества макросов в источник. Линия 393 гласит:
DEFINE_IMDCT
и ищу для этого макроса, мы находим его в строке 179. но он имеет многочисленные инструкции в нем, и условной, и любой из них может быть виновником. поэтому сначала мы делаем make V=1
, чтобы включить подробный (нормальный) выход GNU make
. то мы видим:
[email protected]:~/rentacoder/jcomeau/floureon/ffmpeg$ nasm -f elf -DPIC -g -F dwarf -I./ -I.// -Pconfig.asm -I libavcodec/x86/ -o libavcodec/x86/imdct36.o libavcodec/x86/imdct36.asm
мы изменяем, что:
[email protected]:~/rentacoder/jcomeau/floureon/ffmpeg$ nasm -l /tmp/imdct36.lst -f elf -DPIC -g -F dwarf -I./ -I.// -Pconfig.asm -I libavcodec/x86/ -o libavcodec/x86/imdct36.o libavcodec/x86/imdct36.asm
, чтобы получить файл листинга. заглянув в список для ошибки operation size not specified
, мы найдем ее в строке 102741, на уровне <4>
макрообмена. прокрутка вверх, мы находим команду уровня 2 на линии 102668 как extractps [%3 + %4], %1, 1
и команду уровня 1 на линии 102583, STORE m6, m7, outq + 16*SBLIMIT, 4*SBLIMIT
.
поэтому мы вернемся к кодеку/x86/imdct36.asm, поиск STORE, и найти его на линии 145. конечно же, мы находим 3 extractps
указания в нем:
extractps [%3 + %4], %1, 1
extractps [%3 + 2*%4], %1, 2
extractps [%3 + 3*%4], %1, 3
мы меняем их :
extractps dword [%3 + %4], %1, 1
extractps dword [%3 + 2*%4], %1, 2
extractps dword [%3 + 3*%4], %1, 3
Принимая 32-битные операнды. и, конечно же, он завершает сборку после этого, без необходимости устанавливать yasm
.
как я узнаю, что это не должно быть qword
? Я не знаю, но это не имеет смысла, так как extractps
использует только 32-битные адресаты: «Извлеките значение с плавающей точкой с одной точностью из xmm2 в исходное смещение, указанное imm8, и сохраните результат в reg или m32. верхние 32 бита r64 обнуляются, если reg - r64. " (http://www.felixcloutier.com/x86/EXTRACTPS.html).
Ваш снимок экрана неразборчив и считается плохой формой на S.O. чтобы включить такие элементы, когда простая копия/вставка из вашего терминала в ваш Q сделает что-то читаемое и доступное для поиска (эксперты ищут определенные фразы и используют функцию поиска своего браузера). Пожалуйста, отредактируйте вас Q простым текстом вашей проблемы, используйте инструмент '{}' в левом верхнем углу окна редактирования выделенного текста, чтобы сохранить правильное форматирование для кода/данных/errMsgs/etc. Удачи. – shellter
Спасибо, надеюсь, теперь это приемлемо. – NeMesiS
Флаг обмана по этому вопросу очень вводит в заблуждение. – MetaFight