f488f7576c407e181de50be8df70f4f0ff7e3ab7
The code
void foo(void)
{
int i;
long l = 1L * i;
}
triggered an
Internal compiler error:
Code generation messed up: StackPtr is -4, should be -2
Greg King: "We are lucky that the bug is simple -- a missing "else". The result is that the compiler thinks that it does the opposite of what it actually does: It thinks that it pushes the non-constant expression onto the stack. It doesn't; so, cc65's stack pointer is wrong."
cc65 is a complete cross development package for 65(C)02 systems, including
a powerful macro assembler, a C compiler, linker, librarian and several
other tools.
cc65 has C and runtime library support for many of the old 6502 machines,
including
- the following Commodore machines:
VIC20
C16/C116 and Plus/4
C64
C128
CBM 510 (aka P500)
the 600/700 family
newer PET machines (not 2001).
- the Apple ][+ and successors.
- the Atari 8 bit machines.
- GEOS for the C64 and C128.
- the Nintendo Entertainment System (NES).
- the Supervision console.
- the Oric Atmos.
- the Lynx console.
The libraries are fairly portable, so creating a version for other 6502s
shouldn't be too much work.
Description
Languages
C
62.7%
Assembly
35.3%
Makefile
0.7%
PHP
0.6%
Perl
0.3%
Other
0.3%