From: Groepaz (groepaz_at_gmx.net)
Date: 2003-09-16 05:33:37
ok some more.... first another bug :=P
register unsigned short x;
register unsigned char xx;
#define uaddsc(__a,__x) __asm__ ("lda %v", __x); \
__asm__ ("clc"); \
__asm__ ("adc %v", __a);
uaddsc(x,xx);
gives me "identifier expected for argument 1" for the first line of the macro
(it works with __a instead of __x)
then ... i found a great intermediate solution for the local-labels-in-macros
problem :o) the idea is, that there already exists a counter that is (or
better, can be arranged to) increment at each macro expansion... it is the
__LINE__ symbol :) consider this macro (which lead me to the above bug :P)
#define uaddsc(__a,__x) __asm__ ("lda %v", __a); \
__asm__ ("clc"); \
__asm__ ("adc %v", __x); \
__asm__ ("sta %v", __a); \
__asm__ ("bcc @%w", __LINE__); \
__asm__ ("inc %v+1", __a); \
__asm__ ("@%w:", __LINE__);
this will work great, with the limitation of one macro per line, and no macros
as args that use that kind of trick by themselves.... it even compiles with
--feature dollar_in_identifiers (if you make __x __a) :=)
for this (and maybe other things) some feature in the inline assembler to get
rid of the dollar-sign might come in handy :)
gpz
----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo_at_musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.
This archive was generated by hypermail 2.1.3 : 2003-09-16 05:38:49 CEST