From: Alan C. de A. <ac...@gm...> - 2007-11-06 19:29:59
|
Hi David 2007/11/6, David Lucena <yak...@ya...>: > > --- Alan Carvalho de Assis <ac...@gm...> escribi=F3: > > > Hi, > > I verify that SDCC can't compile macros if it have more than one > > assembly line wrapped by _asm/_endasm. > > > > In example: > > > > #define SAVE_TASK_CTX(stack_low, stack_high) = \ > > > > { = \ > > > > /* Disable global interrupt. */ = \ > > > > _asm = \ > > > > bcf INTCON, 6, 0 = \ > > > > movff STATUS, PREINC1 = \ > > > > movff WREG, PREINC1 = \ > > > > _endasm = \ > > > > /* Store the necessary registers to the stack. */ = \ > > ... > > } > > Have you noticed that the _endasm avobe has not ';'. Can you verify that = is that way in your code? > Before wrap each line I just placed the ';' but the generated code (.asm) was wrong: =09bcf INTCON, 6, 0 movff STATUS, PREINC1 movff WREG, PREINC1 =09movff BSR, PREINC1 movff FSR2L, PREINC1 movff FSR2H, PREINC1 movff FSR0L, PREINC1 movff FSR0H, PREINC1 movff TBLPTRU, PREINC1 movff TBLPTRH, PREINC1 movff TBLPTRL, PREINC1 movff TABLAT, PREINC1 movff PRODH, PREINC1 movff PRODL, PREINC1 =09movlw 0x20 +1 clrf FSR0L, 0 clrf FSR0H, 0 As you can see the compile placed all instruction wrapped by _asm/_endasm into a single line. Thank you very much, Alan |