问题标签 [risc]
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.
c - 将大写转换函数从 C 转换为 MIPS
如何将此代码转换为 MIPS?我不明白如何在 MIPS 中转换输入字符指针中的每个字符。
assembly - SimpleRisc 程序找出一个 32 位数字可以通过多少种方式旋转以给出相同的数字
给定一个程序来找出一个 32 位数字可以通过多少种方式旋转得到相同的数字。
虽然我总是得到 0 作为答案。我的逻辑有什么错误吗?
这里的 .print 指令打印寄存器中的值。lsl 是逻辑左移 lsr 是逻辑右移 b 是无条件分支 beq 如果等于则分支
assembly - CPU中的直接数字操作数如何工作?
举个例子:x86_64 CPU 读取 128 位指令。
据我了解,这几乎是 x86 处理器中发生的事情。否则,例如,不可能将 64 位数字添加到 64 位寄存器(对于大于 64 的数字,操作码将占用几位 + 64 位)。
我想知道的是指令中的位限制是什么,以及如果指令大于位(数据总线),如何读取指令。此外,我还知道大多数 RISC CPU 使用固定大小的指令,所以如果你直接传递一个数字操作数,指令的大小是否会增加一倍?
assembly - RISC 仿真器/编译器
问题:是否有(最好是在线或 Linux 操作的)RISC 编译器,具有显示寄存器内容等的界面而无需硬件?(我想我正在寻找一个简单的模拟器。)
背景:我在网上找了很长时间,我能找到的最接近的是一个不稳定的 NIOS II 编译器。当连接到 Altera 硬件等时,我已经能够运行 NIOS 汇编代码,但我经常无法访问它(而且我宁愿不必每次都将 RISC 转换为 NIOS)。我还看到了一些基于 Unix 的编译器,但据我研究,这也需要硬件。
我理解这样做的复杂性(在某一时刻,我开始编写自己的 RISC 编译器,但我仍在研究该语言并很快遇到了障碍)但我仍然想知道是否有一个足够简单的模拟器/编译器可以解析我忽略的 RISC 长度。
(注意:我正在寻找此处采样的 RISC ,而不是 RISC-V,因为我遇到了一些问题。我尝试过GCC和 ARM,但它们不是我想要的)
cpu-architecture - 为什么不需要明确的单周期数据路径?
为什么 PC 在单周期数据路径中不需要明确的写入信号?为什么多周期数据路径中需要明确的写控制信号?
谢谢
assembly - PUSH/POP 指令被认为是 RISC 还是 CISC?
我在一次采访中被问到PUSH
是POP
RISC 还是 CISC 指令。我说它们是 RISC,但他们告诉我它们实际上是 CISC 指令。我建议 ARM(一种常见的 RISC 实现)有这些指令,但他们指出 ARM 是混合的,不再是纯粹的 RISC。
我在网上找不到任何明确的证据。指令是否真的被认为是 CISC 架构的标志PUSH
,POP
或者它们会在 RISC 系统上找到?为什么?
microcontroller - 在微控制器架构中实现寄存器有什么优势,即加载存储架构
RISC 和 CISC 的主要区别在于,在 RISC 中,我们必须使用寄存器来执行任何算术或逻辑运算。但在 CISC 的情况下,我们可以直接使用内存位置进行此类操作。那么在微控制器架构中实现寄存器银行的优势是什么?问题不是RISC的优势,而是RISC架构中需要什么寄存器。与在其他架构中一样,CISC 操作可以直接使用内存位置完成,我们不需要将其放入寄存器然后再次移动到内存位置。下面是示例: CISC: MUL A,B RISC: LDA R0,A LDA R1,B MUL R0,R1 STR A,R0
所以在上面的例子中,使用 R0 和 R1 的优势是什么?寄存器。负载存储架构的优势是什么?
assembly - 汇编语言中两个数字相加
我正在尝试用汇编语言比较两个数字并显示两个数字中的最大值,如下面的伪代码所示。
我在这里使用这个网站来做这个http://www.peterhigginson.co.uk/RISC/
这是我想出的:
INP R0,2
INP R1,2
CMP R0,R1
BGT OUT R0,4
BLT OUT R1,4
但是我收到错误“第 3 行 BGT 的参数错误”。我不确定我为什么会得到这个,但是我怀疑它可能与缩进或不包括循环或其他东西有关。
任何有关如何解决此问题的帮助将不胜感激。如果有人感兴趣,这里是指令集。http://www.peterhigginson.co.uk/RISC/instruction_set.pdf
assembly - RISC架构中小数的直接算术运算
是否有任何 RISC 架构允许将算术运算单独应用于字节、半字和其他数据单元,其大小小于 CPU 通用寄存器的大小?
在 Intel x86 (IA-32) 和 x86-64(称为 EM64T 或 AMD64)处理器中,不仅整个寄存器可用,而且其较小的部分也可操作。英特尔 ISA 允许对整个寄存器执行所有算术运算,它是一半、四分之一和一个字节(更准确地说,寄存器中有两个字节可用,例如 RAX 中的 AL 和 AH)。操作完成后,我们可以进行溢出检查,如果之前的操作发生了溢出,可以轻松处理。无论我们是对整个字进行操作(IA-32 为 32 位宽,EM64T 为 64 位宽),还是对较小尺寸的数据(半字、四分之一字或byte),如果结果超过所选数据单元的大小,则相应的标志(OF 或 CF)将设置为 1。
问题是是否有任何 RISC 体系结构可以对小数据进行直接算术运算,这些运算是通过处理器硬件实现的(不需要软件仿真来执行它们),并且在这些运算中发生溢出、进位和借位字节、半字等由处理器设备跟踪,不应以软件方式检查。或者这种方法可能与整个 RISC 理念相矛盾,并且现在和过去都没有 RISC 处理器实现过它?
cpu-architecture - 索引寻址模式和隐含寻址模式
索引寻址模式通常用于访问数组,因为数组是连续存储的。我们有一个索引寄存器,它在每次迭代中都会增加,当添加到基地址时会给出数组元素地址。我不明白这种寻址模式的实际需要。为什么我们不能用直接寻址来做到这一点?我们有基地址,每次访问时我们都可以加1。为什么我们需要具有索引寄存器开销的索引寻址模式?
我不确定隐含寻址模式的指令格式。假设我们有一条指令 INC AC。指令中是否指定了 AC 的地址,或者是否有一个特殊的操作码表示“INC AC”并且我们不包括 AC(累加器)的地址?