Цитата Сообщение от Sayman Посмотреть сообщение
сделал иначе:
Код:
#define _sync()			asm("	ei"); asm("	defb 76h");
на это макросе компилятор выдаёт несколько ошибок:
Код:
:                                 asm("   ei"); asm("     defb 76h");

                                  ) expected ^
                                  ; expected ^
                                   ( expected ^
                            expression syntax ^
                                   ) expected ^
                                                        ) expected ^
                                                        ; expected ^
                                                         ( expected ^
                                                  expression syntax ^
                                                         ) expected ^
но при этом всё собирается, и халт на месте.
если засовывать в либу, тогда конструкция выростает до:
Код:
_sync:		pop de  ; return address
		push de
                ei
                halt
                ret
т.е. лишние телодвижения.
Не понял зачем там pop/push
у V3.09 какие-то проблемы с пониманием конструкции asm("ор"), я ее заменял на #asm #endasm
Если тебе надо вставить всего лишь 2 команды которые не понимает оптимизатор и избежать лишнего call/ret, как вариант можно использовать опкоды
#asm
defb
defb
#endasm

В моем случае были объемные процедуры на голом ASM, я их выносил в отдельный модуль.