From: groepaz (groepaz_at_gmx.net)
Date: 2002-02-23 16:25:23
ok i _think_ this is a bug connected to assignment operator and/or
casting.... automatic sign-extension broken?!
; asm routine:
signedsin: .byte $80,...
_SINUS:
tax
lda signedsin,x
; func returns "char" so we silently forget about
; putting 0 to X....
rts
// c-code:
signed char SINUS(signed char a);
void main(){
signed char a;
int b;
a=SINUS(0);
printf("%04x\n",a); // prints "0080", ok
b=(int)SINUS(0);
printf("%04x\n",b); // prints "0080", error
// should be "ff80"
}
in other words, if a (asm-) function that is declared "signed char" is
called and the value casted to an int, shouldnt the COMPILER generate
necessary code to do the required sign-extension? (it works ok ofcoz
if i add that myself to the asm routine, but i really dont like the
idea to cram code here and there that in most cases isnt used anyway)
--
Best regards,
groepaz mailto:groepaz_at_gmx.net
----------------------------------------------------------------------
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 : 2002-02-23 16:25:52 CET