New information:
The function readint() in peep.c complains because it gets the string
'[_ptr_rx]'.
This is not just with rrc, but also with and, or, ld. Also with numeric address:
and a,[0x6000]
or a,[0x6000]
ld a,[0x6000]
I have an easy work-around for "rrc [_ptr_rx]" so I am not stuck.
ldw x,_ptr_rx
rrc (x)
The assembler seems to be happy with the syntax:
00011E C6 50 06 [ 1] 266 ld a, 0x5006
000121 A4 20 [ 1] 267 and a, #(1 << 5)
000123 AB FF [ 1] 268 add a, #255
000125 CE 00 34 [ 2] 269 ldw x, _ptr_rx
000128 76 [ 1] 270 rrc (x)
000129 72 36 00 34 [ 4] 271 rrc [_ptr_rx]
It seems that the peephole optimizer does not like this addressing mode.
Anything I can do to help?
Thanks,
-Richard
On Tuesday 23 January 2018, Richard Hodges wrote:
> Hello, everyone!
>
> I am getting an error that I don't understand. I have an interrupt function
> with some inline assembly, and I can't see anything wrong with it. Am I
> missing something? I got this error with 3.6.0 #9615, and then again with
> 3.6.9 #10186
>
> pi@stm8pi:~ $ sdcc -mstm8 -c x.c
> x.c:21: error 9: FATAL Compiler Internal Error in file 'peep.c' line number
> '46' : readint() got non-integer argument.
> Contact Author with source code
> x.c:21: error 9: FATAL Compiler Internal Error in file 'peep.c' line number
> '46' : readint() got non-integer argument.
> Contact Author with source code
> x.c:21: error 9: FATAL Compiler Internal Error in file 'peep.c' line number
> '46' : readint() got non-integer argument.
> Contact Author with source code
>
> Here is the preprocessor output I used to verify:
>
> char bits_rx;
> char *ptr_rx;
>
> void tim2c_isr(void) __interrupt (14)
> {
> *(volatile char *)(0x5304) = 0;
>
> if (!bits_rx)
> return;
> bits_rx--;
> if (bits_rx & 0x80)
> return;
> __asm
> ld a, 0x5006
> and a, #(1 << 5)
> add a, #255
> rrc [_ptr_rx]
> __endasm;
> if (!(bits_rx & 7))
> ptr_rx++;
> }
>
> It compiles fine without the inline assembly. Sorry if I am missing
> something obvious!
>
> Thanks,
> -Richard
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user