|
From: Maarten B. <sou...@ds...> - 2022-07-15 08:31:43
|
Philipp Klaus Krause schreef op 2022-07-14 21:34:
> Am 14.07.22 um 14:46 schrieb Maarten Brock:
>> Hi Philipp,
>>
>> Philipp Klaus Krause schreef op 2022-07-14 12:58:
>>> SDCC currently supports two forms of inline assembler:
>>>
>>> 1:
>>> __asm
>>> asm code here
>>> __endasm;
>>>
>>> and
>>>
>>> 2:
>>> __asm("asm code here");
>>
>> Does (or will) this second form also support multiple asm
>> instructions? AFAIK it doesn't.
>
> void f(void)
> {
> __asm__("nop\nnop");
> }
>
> and
>
> void f(void)
> {
> __asm__("nop\n"
> "nop");
> }
>
> both work.
Personally I do not like having to add \n to every line.
> Since people like form 1, I'd now think we should keep it, but drop
> #pragma sdcc_hash. That looks like a better way forward and also
> solves the issues.
When this pragma is dropped does that mean it is no longer possible to
use the # for an immediate operand?
Or will it be limited to use outside of a macro? I wouldn't even know
how to escape the #.
Benedikt Freisen schreef op 2022-07-14 18:46:
> Another option would be to rely on a mechanism similar to C++11-style
> raw string literals (i.e. R""), because they may contain newlines.
This could be a very nice solution to this problem, I guess. With that I
think it would be possible to do almost everything we can currently do
in __asm __endasm with __asm__(""), though I suspect that using macros
will still be cumbersome.
Maarten
|