С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
>without support
>For the amount of 1715 EUR
Петросяны #%я =)
Забыл добавить:
>PC locked
(залоченный на один комп, как я понимаю)
А вы типа хотели, чтобы вам плоды сотен человекочасов за спасибо отдали? Кто еще петросяны...
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Господа, подскажите вот какую вещь.
Как с помощью препроцессора передать символ # вовнутрь тела макроса?
Я придумал способ передавать параметры функций через регистры. Сразу скажу про ограничение этого способа. Он не позволяет передавать вычисляемые в рантайме выражения, только константы, числа известные на этапе компиляции. Проблема в том, что SDCC-ассемблер требует везде, где подразумевается числовой литерал, писать перед ним # (в sdasz80 это не обозначитель шестнадцатеричного числа), и опускать # нельзя. Получается, что без # невозможно нормально написать даже DB(DEFB). А препроцессор напротив считает # сугубо служебным символом и ругается на любые попытки передавать его в теле макроса.
Т.е. хочу, чтобы если встретилось BORDER(4), оно превращалось в:
но в SDCC-асме так будет ошибка. Надо:Код:LD A,4 CALL 0x229B
Так что при попытке скомпилировать код:Код:LD A,#4 CALL 0x229B
SDCC выдаёт ошибку:Код:#ifndef Basic_fastcall_BORDER import void BORDER (BYTE color); #else //Basic_fastcall_BORDER #define BORDER(color) __asm \ LD A,#color \ CALL 0x229B \ __endasm; #endif
Пробовал различные комбинации скобочек, по совету Филиппа пробовал такое:Basic.h:13:29: error: '#' is not followed by a macro parameter
Пробовал даже диграфы и триграфы. Не подошли (не понимаю тогда зачем они вообще нужны).Код:#define id(x) x #ifndef Basic_fastcall_BORDER import void BORDER (SHORTINT color); #else //Basic_fastcall_BORDER #define BORDER(color) __asm \ LD A,id(#)color \ CALL 0x229B \ __endasm; #endif
Есть ли решение?
Код:#define hash # #define id(x) x #define BORDER(x) ld a,id(hash)x void main() { BORDER(5) }
Всё-таки удалось выспросить у IAR триальную версию Embedded Workbench for Z80. Филипп, как и обещал, добавил её в список.
Сообщение от Philipp Klaus Krause
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)