Alan Carvalho de Assis wrote:
> Hi David
>
> 2007/11/6, David Lucena <[EMAIL PROTECTED]>:
>
>> --- Alan Carvalho de Assis <[EMAIL PROTECTED]> escribió:
>>
>>
>>> 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:
>
> bcf INTCON, 6, 0 movff STATUS, PREINC1 movff WREG, PREINC1
> movff 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
> movlw 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.
>
>
The C preprocessor coverts all the '\' delimited lines into a single
line (this is the correct behavior) and pass it to the C compiler. The C
compiler just pass everything between __asm and __endasm; directly to
the assembler. So if the assembler doesn't know how to assemble multiple
instructions in a single line, you have a problem. An it seems that
gpasm is such an assembler...
I think that your workaround to put each asm line in a sparate
__asm/__endasm; block is correct.
Borut
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user