gpt4 book ai didi

assembly - 机器如何确定屏幕上显示的内容(具体为 6502)?

转载 作者:行者123 更新时间:2023-12-02 21:48:53 34 4
gpt4 key购买 nike

我知道这是一个非常模糊的问题,对于程序员来说这可能不是一个好问题,因为这实际上是一个与硬件相关的事情,但我猜想一些汇编/机器代码会发挥作用,这将适合这个网站。

所以我想知道的是;想象一下 6502 处理器。它有一些寄存器、指令集和对一定量内存的访问。然后想象一下您有一些具有任意分辨率的 LCD 屏幕。如何确定该屏幕上显示的内容?如何确定哪个位置的哪些像素被赋予什么颜色?例如,屏幕是否总是显示一个像素,该像素的值在 6502 的累加器中,并且 x 位置存储在寄存器 x 中,y 位置存储在 y 中?或者每台机器的解释都不同?

有人编写了一个 JavaScript 6502 模拟器,设备显示一个像素,其值位于从 200 美元开始的某个内存位置。例如:

LDA #$08 
STA $200

将在位置 x:0, y:0 处显示粉红色像素。

LDA #$01
STA $205

将在位置 x:5, y:0 处显示一个白色像素。

但是,如果你看一下 NES,它有一个专用的 PPU,可以在屏幕上的特定区域显示具有特定值的特定像素。

那么它是如何工作的呢?每台机器(即 Apple II、C64、NES)对它的解释是否不同,或者它的解释方式是否存在某种一致性?

事实上,如果为 Apple II 编译的程序以某种方式在 C64 上执行,会发生什么情况?机器应该能够读取指令吧?

最佳答案

图形的显示方式取决于机器,因此没有明确的答案。例如,在 C64 上,图形硬件被映射到正常的地址空间,因此您必须写入内存的特定部分才能在屏幕上打印字符。如果你想显示图形,那么你必须通过写入显示硬件的寄存器来切换模式,并且映射的内存也可能会改变。因此,C64 的正常可访问内存低于 64KB。不过,您可以关闭内存映射,从而访问图形内存下方的全部内存,这样它就变成了一台没有显示器的机器。

但是,在您拥有的 PC 上,例如VGA、EGA、Hercules 卡等,通过访问特定端口并通过这些端口向其发送命令来写入。一种完全不同的方法。但这是系统设计决定,与 CPU 无关。

As a matter of fact, what would happen if a program compiled for an Apple II was somehow executed on a C64? The machine should be able to read the instructions, right?

嗯,答案很明确。它很可能会崩溃,因为即使指令集可能相同(我不知道苹果有哪个CPU),硬件细节也会有所不同。

关于assembly - 机器如何确定屏幕上显示的内容(具体为 6502)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126338/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com