问题标签 [dcpu-16]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
469 浏览

assembly - 为什么DCPU-16指令的二进制表示中有前导1

我目前正在摆弄 DCPU-16 汇编器(参见http://0x10c.com/doc/dcpu-16.txthttp://jazzychad.net/dcpu.html)。

在将汇编程序指令转换为十六进制/二进制的方式中,我不明白一件事。

例如,采取类似的指令

应该将寄存器 B 的值设置为十进制 2(或十六进制 0x0002 或二进制 0b000010)

DCPU-16 的指令格式为

因此,低端的操作码占 4 位,第一个值占 6 位,第二个值占 6 位。

手动转换指令时,我会这样做:

以完整的指令结束

但 DCPU-16 的正确值是

也就是说,添加了前导 1 - 为什么?

我对汇编程序和任何其他类型的硬核低级机器指令完全陌生,所以如果这是一个非常愚蠢的问题,请多多包涵。

0 投票
2 回答
673 浏览

encryption - 为 16 位系统编写 RC4

我正在为 DCPU-16 编写 RC4,但是在开始之前我有一些问题。

RC4算法:

由于我正在使用 16 位字,因此每个元素的S[]范围都可以是 0-65535,而不是预期的 0-255。K 需要为 0-65535,处理这个问题的最佳方法是什么?

我看到的选项(及其问题)是:

  1. 仍然Mod 255在任何地方使用并用连接的两轮填充输出(运行时间更长,我想保持我的CPB尽可能低)
  2. 调整 RC4 所以K将是一个 16 位的数字,同时仍然使用长度为 255 的数组S[](我想做正确的加密,所以我担心在修补 RC4 时会出错。)

我最好的选择是什么?我觉得我可能必须做#1,但我希望这里的人们能给我灌输信心去做#3。

0 投票
1 回答
271 浏览

dcpu-16 - DCPU-16 中的有符号算术/控制流?

DCPU-16 Notch新游戏中的CPU )似乎没有任何签名IF//指令MULDIV

是否还有一种方法可以进行签名算术/控制流不是超级令人难以置信的痛苦?

0 投票
2 回答
2415 浏览

bison - 我应该如何向 flex+bison 汇编器添加预处理器?

我使用 flex+bison 编写了一个简单的汇编程序。我想在汇编语言中添加一个预处理器(宏)。这是我第一次尝试使用 flex+bison,我不知道该怎么做。

添加一个单独的 flex+bison 实例并完全单独进行预处理是否合适?或者他们是否支持为不同的处理阶段表达不同的结构?

如果好奇,汇编器就在这里,用于 DCPU-16 架构。

0 投票
1 回答
1552 浏览

pascal - Turbo Pascal 叠加层是如何工作的?

我正在为游戏 0x10c中的 16 位 DCPU 实现一个汇编链接器。

有人向我建议的一种技术是使用“覆盖,就像过去在 Turbo Pascal 中一样”,以便在运行时交换代码。

我得到了基本的想法(将覆盖的符号链接到相同的内存,在 ref 之前交换),但是它们的实现是什么?

它是编译器在引用之前插入的函数吗?这是一个陷阱吗?叠加层的数据是存储在叠加层的位置,还是存储在某个大表中?它运行良好,还是经常中断?是否有装配接口与覆盖的 Pascal 链接(反之亦然),还是不兼容?

谷歌基本上没有给我任何信息(除了它在现代 Pascal 编译器上是禁止的)。而且,我只是,就像,五岁太年轻了,当他们现在还需要他们的时候。

0 投票
2 回答
299 浏览

stack - SET A,0x1E 与 SET A,0x1F

这是我第一次尝试 dpcu,我正在检查 dpcu-16 程序集生成的机器代码

我正在使用这个模拟器:http ://dcpu.ru/

我正在尝试比较由

生成的代码如下:

我不明白为什么这两个值之间的操作数大小会发生变化

0 投票
1 回答
216 浏览

assembly - IFN A, 0x10 如何在 DCPU 16 的原始规范中转换为 0xc00d

我正在尝试为 Notch 的 DCPU-16 规范编写汇编程序。此 CPU 的原始规格可在此处找到。

相关线路:

...

到目前为止,我了解说明,但对我来说,这应该至少有 2 个字长,而不仅仅是0xc00d

将是7c01 0010。所以

应该7c0d 0010不是吗?

为什么 , 中的b参数IFN不会导致指令需要 [PC++] 或 nextword 组件?

0 投票
1 回答
250 浏览

assembly - DCPU-16 中的 XNU 内核克隆

https://github.com/galaxas0/MachX-Kernel

在我着手一个旨在失败的项目之前,我想通过提出一个简单的问题来解决问题,这样他们就不会失败:DCPU-16 到底如何加载内核……是虚拟的。我了解物理计算机上的引导和内核初始化过程,但是,DCPU-16 让我不知所措。我是否应该假设它确实是一个工作方式完全相同的 1:1 16 位处理器?

0 投票
1 回答
381 浏览

yacc - 通过宏扩展跟踪原始行号

我正在开发一个有趣的汇编程序,用 C、flex、bison 编写。我想添加宏、包含和重复块,并且正在考虑使用单独的预处理阶段解析器来执行此操作。

我的问题是,我如何跟踪原始源代码行号(和文件名)?这是为了生成有用的错误消息、漂亮的打印和生成调试信息。

预处理完成后第二个解析器中的 yylineno 可能会在宏扩展等之后被偏移。

0 投票
2 回答
397 浏览

assembly - DCPU-16 不接受来自键盘的输入

我已经开始学习 DCPU-16 的汇编来为 0x10c 做准备,但是在我正在运行的教程结束时,我发现程序没有响应键盘输入。一步一步地进入,我发现代码被卡在循环设置中,让 cpu 等待键盘输入。

这里的违规行:

可能是因为代码是针对旧版本的 DCPU 的吗?如果是这样,它现在将如何运作?

第一篇关于 Stack Overflow 的帖子,如果我有任何失礼,请见谅,谢谢大家。完整代码: