问题标签 [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 回答
2052 浏览

assembly - DCPU-16 中的 I 和 J 寄存器是特殊的吗?

DCPU-16 包括 8 个通用寄存器,分别命名为A, B, C, X, Y, Z, IJI使用和Jfor 循环计数器有点像程序员的“比喻” 。在 DCPU-16 中,是IJ专用寄存器,应该只在循环中使用 - 还是它们最终都以相同的颜色结束?

0 投票
2 回答
914 浏览

assembly - 如何理解 DCPU-16 specs 汇编示例的第一行?

我试图理解规范,但无法理解给出的示例的第一行:

这是我从规格中了解到的:

  • 第一个字(7c01)完全定义了指令
  • 操作符是 0x1 这是命令SET a, b
  • b = 111100 = 0x3C(当我转换为十六进制时)= 文字值 0x3C
  • a = 000000 = 寄存器 A

所以我将指令理解为 SET A, 0x3C

谁能告诉我哪里出错了?

0 投票
2 回答
804 浏览

dcpu-16 - 你能写信给[PC]吗?

根据DCPU 规范SET,指令失败的唯一情况是该a值是文字。

那么下面的工作吗?

一个更有用的版本是设置一个偏移量PC,所以一个相当奇怪的无限循环将是:

0 投票
1 回答
611 浏览

scheme - 此代码的适当 Racket/Scheme 习语是什么?

我是球拍/方案的新手,所以我决定通过为DCPU-16(一个简单的 16 位处理器)实现一个模拟器来学习。

因此,我的问题是:实施我的解决方案的更好方法是什么?

这是我一起破解来控制 CPU 寄存器的解决方案。要点是允许将修改寄存器的函数链接在一起。例如:

我的注册解决方案的全文如下。我的完整程序也在 github 上。有这么多重复的逻辑,我知道一定有一个更简单的方法:

更新:

感谢 oobviat 的建议,我使用列表进行了重构。唯一棘手的部分是更新列表中的值。我为 map 编写了一个程序,它将更新所需的寄存器并让其他寄存器保持原始值:

0 投票
1 回答
1484 浏览

dcpu-16 - DCPU-16 汇编程序“dat”是否带有一个应该为每个字符生成一个字节或单词的字符串?

我不清楚是否

dat "Hello"

应该生成 5 个字或 3 个字(带有一个字节的填充)

0 投票
1 回答
1303 浏览

assembly - 优化 DCPU-16 FizzBu​​zz

我试图在 DCPU-16 中实现 FizzBu​​zz。我使用这个网络模拟器: http: //mappum.github.com/DCPU-16/(存储库:https ://github.com/mappum/DCPU-16 )。

它在循环结束之前停止。为什么?

我该如何优化它?我是一名高级语言程序员,对 asm 一无所知。你有这方面的一些基本资源吗?

有关 DCPU-16 的更多信息:官方规格:http://0x10c.com/doc/dcpu-16.txt -非官方规格:http : //0x10.cc/

编码:

0 投票
4 回答
1968 浏览

multitasking - 在无中断 DCPU-16 上是否可以使用抢占式多任务操作系统?

我正在研究各种操作系统设计,希望为 DCPU-16 编写一个简单的多任务操作系统。然而,我读到的所有关于抢占式多任务实现的内容都以中断为中心。听起来在 16 位硬件和软件的时代,协同多任务处理更为普遍,但这要求编写每个程序时都要考虑到多任务处理。

有没有办法在无中断架构上实现抢占式多任务处理?我能想到的只是一个可以动态切换任务的解释器,但这会对性能产生巨大的影响(如果它必须解析每个操作并且不让任何东西在本机运行,那么它可能会降低 10-20x+ 的数量级,我是想象)。

0 投票
4 回答
538 浏览

c - 不同内存寻址方案的 C 代码可移植性

如果我理解正确,0x10c 的DCPU - 16 规范描述了一个 16 位地址空间,其中每个偏移量寻址一个 16 位字,而不是大多数其他内存架构中的一个字节。这会产生一些奇怪的后果,例如,我想,并且都会返回。sizeof(char)sizeof(short)1

在这些不同的内存寻址方案之间保持 C 代码可移植性是否可行?要记住什么问题?

编辑:也许我应该举一个更具体的例子。假设您有一些处理字节流的网络代码。您是否通过在每个地址仅放置一个字节来丢弃一半的内存以便代码可以保持不变,或者您是否使用位移来概括所有内容以处理每个偏移量的 N 个字节?

edit2:答案似乎集中在数据类型大小的问题上,这不是重点——我什至不应该提到它。问题是如何应对失去使用指针寻址内存中任何字节的能力。期望代码对此不可知是否合理?

0 投票
2 回答
364 浏览

assembly - DCPU-16 DIV 指令

我正在查看 DCPU-16 的规范,但我无法理解使用 DIV 指令的溢出值的目的:

DIV a, b - 将 a 设置为 a/b,将 O 设置为 ((a<<16)/b)&0xffff。

任何人都可以在这里解释 O 的语义含义,它有什么用?

0 投票
1 回答
166 浏览

cryptography - 为 DCPU-16 编写流密码,鉴于它的局限性,我应该关注哪个?

为了好玩,我正在为DCPU-16(游戏0x10 c的虚构 CPU )编写流密码。该处理器只有 16 位寄存器,运行频率为 100 Khz。但是,就目前而言,内存访问以及诸如乘法和除法之类的东西非常快(DIV使用两次间接内存访问的 A 只需要 5 个周期)。

有了这些限制,我最好的选择是什么?我正在考虑 RC4,但是我担心使用我的代码的其他人无法正确使用它,我们可能会遇到另一场 WEP 灾难。我觉得我需要做一些比 RC4 更复杂的事情来保护其他程序员免受他们自己的伤害,但是我担心使用幻数或预计算表的算法,这些表期望 8 位字节作为最小单位而不是 16 位字。