1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-25 17:29:50 +00:00

Fixed wrong code generation in g_leasp.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4118 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2009-09-04 20:57:23 +00:00
parent fa2064ae3b
commit 38ff6818fc

View File

@ -929,13 +929,15 @@ void g_getind (unsigned Flags, unsigned Offs)
void g_leasp (int Offs) void g_leasp (int Offs)
/* Fetch the address of the specified symbol into the primary register */ /* Fetch the address of the specified symbol into the primary register */
{ {
/* Get low and high byte */ unsigned char Lo, Hi;
unsigned char Lo = (unsigned char) Offs;
unsigned char Hi = (unsigned char) (Offs >> 8);
/* Calculate the offset relative to sp */ /* Calculate the offset relative to sp */
Offs -= StackPtr; Offs -= StackPtr;
/* Get low and high byte */
Lo = (unsigned char) Offs;
Hi = (unsigned char) (Offs >> 8);
/* Generate code */ /* Generate code */
if (Lo == 0) { if (Lo == 0) {
if (Hi <= 3) { if (Hi <= 3) {
@ -977,10 +979,10 @@ void g_leasp (int Offs)
/* Full 16 bit offset inlined */ /* Full 16 bit offset inlined */
AddCodeLine ("lda sp"); AddCodeLine ("lda sp");
AddCodeLine ("clc"); AddCodeLine ("clc");
AddCodeLine ("adc #$%02X", (unsigned char) Offs); AddCodeLine ("adc #$%02X", Lo);
AddCodeLine ("pha"); AddCodeLine ("pha");
AddCodeLine ("lda sp+1"); AddCodeLine ("lda sp+1");
AddCodeLine ("adc #$%02X", (unsigned char) (Offs >> 8)); AddCodeLine ("adc #$%02X", Hi);
AddCodeLine ("tax"); AddCodeLine ("tax");
AddCodeLine ("pla"); AddCodeLine ("pla");
} }