问题标签 [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.
assembly - 为什么DCPU-16指令的二进制表示中有前导1
我目前正在摆弄 DCPU-16 汇编器(参见http://0x10c.com/doc/dcpu-16.txt和http://jazzychad.net/dcpu.html)。
在将汇编程序指令转换为十六进制/二进制的方式中,我不明白一件事。
例如,采取类似的指令
应该将寄存器 B 的值设置为十进制 2(或十六进制 0x0002 或二进制 0b000010)
DCPU-16 的指令格式为
因此,低端的操作码占 4 位,第一个值占 6 位,第二个值占 6 位。
手动转换指令时,我会这样做:
以完整的指令结束
但 DCPU-16 的正确值是
也就是说,添加了前导 1 - 为什么?
我对汇编程序和任何其他类型的硬核低级机器指令完全陌生,所以如果这是一个非常愚蠢的问题,请多多包涵。
encryption - 为 16 位系统编写 RC4
我正在为 DCPU-16 编写 RC4,但是在开始之前我有一些问题。
RC4算法:
由于我正在使用 16 位字,因此每个元素的S[]
范围都可以是 0-65535,而不是预期的 0-255。K 需要为 0-65535,处理这个问题的最佳方法是什么?
我看到的选项(及其问题)是:
- 仍然
Mod 255
在任何地方使用并用连接的两轮填充输出(运行时间更长,我想保持我的CPB尽可能低) - 调整 RC4 所以
K
将是一个 16 位的数字,同时仍然使用长度为 255 的数组S[]
(我想做正确的加密,所以我担心在修补 RC4 时会出错。)
我最好的选择是什么?我觉得我可能必须做#1,但我希望这里的人们能给我灌输信心去做#3。
bison - 我应该如何向 flex+bison 汇编器添加预处理器?
我使用 flex+bison 编写了一个简单的汇编程序。我想在汇编语言中添加一个预处理器(宏)。这是我第一次尝试使用 flex+bison,我不知道该怎么做。
添加一个单独的 flex+bison 实例并完全单独进行预处理是否合适?或者他们是否支持为不同的处理阶段表达不同的结构?
如果好奇,汇编器就在这里,用于 DCPU-16 架构。
pascal - Turbo Pascal 叠加层是如何工作的?
我正在为游戏 0x10c中的 16 位 DCPU 实现一个汇编链接器。
有人向我建议的一种技术是使用“覆盖,就像过去在 Turbo Pascal 中一样”,以便在运行时交换代码。
我得到了基本的想法(将覆盖的符号链接到相同的内存,在 ref 之前交换),但是它们的实现是什么?
它是编译器在引用之前插入的函数吗?这是一个陷阱吗?叠加层的数据是存储在叠加层的位置,还是存储在某个大表中?它运行良好,还是经常中断?是否有装配接口与覆盖的 Pascal 链接(反之亦然),还是不兼容?
谷歌基本上没有给我任何信息(除了它在现代 Pascal 编译器上是禁止的)。而且,我只是,就像,五岁太年轻了,当他们现在还需要他们的时候。
stack - SET A,0x1E 与 SET A,0x1F
这是我第一次尝试 dpcu,我正在检查 dpcu-16 程序集生成的机器代码
我正在使用这个模拟器:http ://dcpu.ru/
我正在尝试比较由
生成的代码如下:
我不明白为什么这两个值之间的操作数大小会发生变化
assembly - IFN A, 0x10 如何在 DCPU 16 的原始规范中转换为 0xc00d
我正在尝试为 Notch 的 DCPU-16 规范编写汇编程序。此 CPU 的原始规格可在此处找到。
相关线路:
...
到目前为止,我了解说明,但对我来说,这应该至少有 2 个字长,而不仅仅是0xc00d
将是7c01 0010
。所以
应该7c0d 0010
不是吗?
为什么 , 中的b
参数IFN
不会导致指令需要 [PC++] 或 nextword 组件?
assembly - DCPU-16 中的 XNU 内核克隆
https://github.com/galaxas0/MachX-Kernel
在我着手一个旨在失败的项目之前,我想通过提出一个简单的问题来解决问题,这样他们就不会失败:DCPU-16 到底如何加载内核……是虚拟的。我了解物理计算机上的引导和内核初始化过程,但是,DCPU-16 让我不知所措。我是否应该假设它确实是一个工作方式完全相同的 1:1 16 位处理器?
yacc - 通过宏扩展跟踪原始行号
我正在开发一个有趣的汇编程序,用 C、flex、bison 编写。我想添加宏、包含和重复块,并且正在考虑使用单独的预处理阶段解析器来执行此操作。
我的问题是,我如何跟踪原始源代码行号(和文件名)?这是为了生成有用的错误消息、漂亮的打印和生成调试信息。
预处理完成后第二个解析器中的 yylineno 可能会在宏扩展等之后被偏移。
assembly - DCPU-16 不接受来自键盘的输入
我已经开始学习 DCPU-16 的汇编来为 0x10c 做准备,但是在我正在运行的教程结束时,我发现程序没有响应键盘输入。一步一步地进入,我发现代码被卡在循环设置中,让 cpu 等待键盘输入。
这里的违规行:
可能是因为代码是针对旧版本的 DCPU 的吗?如果是这样,它现在将如何运作?
第一篇关于 Stack Overflow 的帖子,如果我有任何失礼,请见谅,谢谢大家。完整代码: