8位NES程序存储器限制

jus*_*tyy 2 c 6502

我正在学习C编译器中的8位6502编程(www.cc65.org)

NES FC具有8位6502处理器和2K RAM.但是,以下C编译(到nes文件中)并在VirtualNES模拟器中成功加载.

#include "conio.h"
#include "stdlib.h"

int dump[1000];

void main()
{
    int *a;
    a = (int*)malloc(19222999);
    cputs("Hello, World!");
    a[0] = 1;
    for(;;); // loop forever, never ends
}
Run Code Online (Sandbox Code Playgroud)

为什么这样可以?显然我在上面的C代码中分配了比2K更多的内存.

Sne*_*tel 6

Segfaults是现代时代奇妙而神奇的恩赐; 他们代表我们的计算机自我诊断他们自己的错误,时刻刻刻.

相比之下,相比之下,计算机"崩溃"的方式很少,因为计算机会意识到某些事情出了问题,导致它做了别的事情.在这里,你已经在内存中写了一个1(很可能覆盖了一些重要的东西!),然后计算机继续运行.

内容:在旧架构和嵌入式系统中,"不崩溃"是一个非常低的清除条,并不表示事情是正常的.

  • 这是一个很好的答案 (2认同)