【发布时间】:2017-09-20 06:14:40
【问题描述】:
我一直试图了解旧的 6502 处理器是如何工作的,尤其是对于任天堂娱乐系统而言。继续让我感到困惑的一件事是系统如何将相关数据从 ROM 移动到 RAM 中,因为所有汇编指令似乎都处理 RAM-RAM 命令。例如,如果游戏需要在马里奥中加载一个敌人,CPU如何识别要加载的相关区域,然后加载它们?一旦它在 RAM 中,我有一个不错的理解,但是它将数据放入我不理解的 RAM 中。谢谢!
【问题讨论】:
-
处理器完全不知道它是在访问 RAM 还是 ROM。程序员有责任确保在写入 RAM 之前从不读取位于 RAM 中的地址,并且从不尝试写入 ROM。并不复杂,在像这样的简单系统上它们被映射到固定地址。
-
程序员将地址硬编码到汇编代码中。虽然我不知道任天堂架构的确切细节,但 ROM 大概映射在地址空间中的固定位置。这种概念性问题可能更适合Retrocomputing。
-
大多数处理器不知道关于 rom 与 ram 的内存映射是什么,外围设备在哪里等等。这是程序员知道的。有一些例外,一些外围访问被设计到指令集中,像 cortex-m 这样的 cpu 被设计成一个地址带用于代码,一个用于数据,一个用于外围设备,但仍然取决于芯片供应商尊重这一点,程序员真正知道东西在哪里。 6502、8086、z80 等 100% 由程序员决定。