问题标签 [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 中的 I 和 J 寄存器是特殊的吗?
DCPU-16 包括 8 个通用寄存器,分别命名为A, B, C, X, Y, Z, I
和J
。I
使用和J
for 循环计数器有点像程序员的“比喻” 。在 DCPU-16 中,是I
和J
专用寄存器,应该只在循环中使用 - 还是它们最终都以相同的颜色结束?
assembly - 如何理解 DCPU-16 specs 汇编示例的第一行?
我试图理解规范,但无法理解给出的示例的第一行:
这是我从规格中了解到的:
- 第一个字(7c01)完全定义了指令
- 操作符是 0x1 这是命令
SET a, b
- b = 111100 = 0x3C(当我转换为十六进制时)= 文字值 0x3C
- a = 000000 = 寄存器 A
所以我将指令理解为 SET A, 0x3C
谁能告诉我哪里出错了?
dcpu-16 - DCPU-16 汇编程序“dat”是否带有一个应该为每个字符生成一个字节或单词的字符串?
我不清楚是否
dat "Hello"
应该生成 5 个字或 3 个字(带有一个字节的填充)
assembly - 优化 DCPU-16 FizzBuzz
我试图在 DCPU-16 中实现 FizzBuzz。我使用这个网络模拟器: 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/
编码:
multitasking - 在无中断 DCPU-16 上是否可以使用抢占式多任务操作系统?
我正在研究各种操作系统设计,希望为 DCPU-16 编写一个简单的多任务操作系统。然而,我读到的所有关于抢占式多任务实现的内容都以中断为中心。听起来在 16 位硬件和软件的时代,协同多任务处理更为普遍,但这要求编写每个程序时都要考虑到多任务处理。
有没有办法在无中断架构上实现抢占式多任务处理?我能想到的只是一个可以动态切换任务的解释器,但这会对性能产生巨大的影响(如果它必须解析每个操作并且不让任何东西在本机运行,那么它可能会降低 10-20x+ 的数量级,我是想象)。
c - 不同内存寻址方案的 C 代码可移植性
如果我理解正确,0x10c 的DCPU - 16 规范描述了一个 16 位地址空间,其中每个偏移量寻址一个 16 位字,而不是大多数其他内存架构中的一个字节。这会产生一些奇怪的后果,例如,我想,并且都会返回。sizeof(char)
sizeof(short)
1
在这些不同的内存寻址方案之间保持 C 代码可移植性是否可行?要记住什么问题?
编辑:也许我应该举一个更具体的例子。假设您有一些处理字节流的网络代码。您是否通过在每个地址仅放置一个字节来丢弃一半的内存以便代码可以保持不变,或者您是否使用位移来概括所有内容以处理每个偏移量的 N 个字节?
edit2:答案似乎集中在数据类型大小的问题上,这不是重点——我什至不应该提到它。问题是如何应对失去使用指针寻址内存中任何字节的能力。期望代码对此不可知是否合理?
assembly - DCPU-16 DIV 指令
我正在查看 DCPU-16 的规范,但我无法理解使用 DIV 指令的溢出值的目的:
DIV a, b - 将 a 设置为 a/b,将 O 设置为 ((a<<16)/b)&0xffff。
任何人都可以在这里解释 O 的语义含义,它有什么用?