ошибка во в assembler процедуре

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

ошибка во в assembler процедуре

Сообщение smartmaster » 13.04.2010 11:48:15

Господа, посмотрите пожалуйста проектик.
Ошибка в команде lidt
mismatch in operand sizes

Но, самое интересное, что если убрать -Anasmelf, то компилит без ошибок.

Как заставить его компилироваться без ошибок?
Спасибо.

Добавлено спустя 3 часа 27 минут 16 секунд:
И второй вопрос походу останется без ответа.
Может я пишу не понятно?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
smartmaster
новенький
 
Сообщения: 13
Зарегистрирован: 27.03.2010 15:56:30

Re: ошибка во в assembler процедуре

Сообщение Sergei I. Gorelkin » 13.04.2010 22:26:43

Ошибка mismatch in operand sizes чаще всего означает отсутствие указания размера (byte ptr/word ptr/dword ptr) перед операндом.
Кроме того, вывод в текстовый формат nasm едва ли кто-то когда-то отлаживал, поэтому при использовании -Anasmelf можно наловить каких угодно косяков.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: ошибка во в assembler процедуре

Сообщение smartmaster » 14.04.2010 10:53:37

Спасибо, что откликнулись Сергей, а то я уж думал, что никто ничего не скажет.

-Anasmelf я выбрал потому, что в таком режиме можно заглянуть в *.s файлы подключая режим -a
Если выбрать ассемблер по умолчанию то он не может скомпилить сгененрированный файл.
Например оставим режим -al без -Anasmelf в этом же проекте.
выдает ошибки(ниже). Самое интересное, что при отключенном режиме -al все компилится без ошибок. Може можно как нибудь скомпилить без ошибок (любым ассемблером ), что бы можно было посмотреть какой код генерит компилятор?

obj\asmproc.s: Assembler messages:
obj\asmproc.s:11: Warning: .type pseudo-op used outside of .def/.endef ignored.
obj\asmproc.s:11: Error: junk at end of line, first unrecognized character is `A
'
obj\asmproc.s:31: Warning: .size pseudo-op used outside of .def/.endef ignored.
obj\asmproc.s:31: Error: junk at end of line, first unrecognized character is `A
'
obj\asmproc.s:36: Warning: .type pseudo-op used outside of .def/.endef ignored.
obj\asmproc.s:36: Error: junk at end of line, first unrecognized character is `A
'
obj\asmproc.s:46: Warning: .size pseudo-op used outside of .def/.endef ignored.
obj\asmproc.s:46: Error: junk at end of line, first unrecognized character is `A
'
obj\asmproc.s:51: Warning: .type pseudo-op used outside of .def/.endef ignored.
obj\asmproc.s:51: Error: junk at end of line, first unrecognized character is `A
'
obj\asmproc.s:68: Warning: .size pseudo-op used outside of .def/.endef ignored.
obj\asmproc.s:68: Error: junk at end of line, first unrecognized character is `A
'
obj\asmproc.s:75: Warning: .type pseudo-op used outside of .def/.endef ignored.
obj\asmproc.s:75: Error: junk at end of line, first unrecognized character is `T
'
obj\asmproc.s:80: Warning: .size pseudo-op used outside of .def/.endef ignored.
obj\asmproc.s:80: Error: junk at end of line, first unrecognized character is `T
'
obj\asmproc.s:178: Error: junk at end of line, first unrecognized character is `
smartmaster
новенький
 
Сообщения: 13
Зарегистрирован: 27.03.2010 15:56:30

Re: ошибка во в assembler процедуре

Сообщение Sergei I. Gorelkin » 14.04.2010 12:29:18

Смотреть, что получается, можно с использованием -Anasmelf -al, а компилировать рабочий вариант без этих ключей. Код в обеих случаях генерится один и тот же.
Так, чтобы и посмотреть, и потом скомпилировалось ассемблером, скорее всего можно с ключом -Aas. Но ассемблерный текст будет в непривычном формате AT&T.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: ошибка во в assembler процедуре

Сообщение smartmaster » 14.04.2010 14:30:28

; [22] lidt word ptr [idt]
lidt word [eax]

в asmproc.s комплилятор делает по своему.
потом nasm не может это разобрать.

Странно почему не работает опция -RDirect? в -h показывает, а реально не работает.
smartmaster
новенький
 
Сообщения: 13
Зарегистрирован: 27.03.2010 15:56:30


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru