С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ну так пересоберите тесты для IAR без использования недокументированных инструкций. Тогда IAR появится в списке Филиппа, и это окончательно расставит точки над тем, у кого лучшая кодогенерация.
P.S. Списался с IAR, попросил сделать IAR Embedded Workbench for Zilog Z80 безплатным хотя бы для некоммерческого использования, ну раз уже не продают, так чего хоронить. Ага, щаз.
Dear Oleg,
Thanks for your email!
I've now checked the issue and due to this is a product we do not longer support we can offer you an
PC locked license of EWZ80 version 4.06 ( from the year 2001) without support.
For the amount of 1715 EUR
Payment: In advance
Please do check if this version would be ok and also if you would need any further information or would like
to place an order.
Best regards,
Liselott Lundeborg Sales Manager Sweden - Key Account Manager Nordic
IAR Systems AB
Box 23051, Strandbodgatan 1
SE-750 23 Uppsala, SWEDEN
Website: www.iar.com
>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)