问题标签 [sll]

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 回答
9432 浏览

vhdl - VHDL:std_logic_vector 左移和右移运算符?

任何人将如何在 STD_LOGIC_VECor 上的 VHDL 中执行右移或左移...

它不起作用,为什么??

我收到错误消息:sll 在这种情况下不能有这样的操作数。但是在什么情况下可以使用它,以及如何执行我的左移?

这些是我的包括:

不包括执行我的左移操作所需的那个吗?


完整代码

0 投票
1 回答
3058 浏览

assembly - MIPS 汇编 sll 指令

我对 sll 指令有疑问。sll $t1,$a0,1$a0 持有价值 11 会给 $t1 价值 16(我在 MARS 中测试过)。

我对 $t1 的建议是 22,因为左移 11 又名 01011 会给我 10110,即十进制的 22。我在哪里做错了?

谢谢!

0 投票
3 回答
44881 浏览

assembly - 为什么要在 MIP 程序集中使用 sll 等进行一些调整?

所以我有点理解命令 sll 正在做什么,因为我读到这个并且它几乎只是将所有位左移 1。我只是想知道我为什么要这样做?

我有一个班级的作业,其中有一个例子......其中 $s6 和 $s7 是数组的基地址,而 $s1/$s2 只是一些变量。

为什么要转移一点?简单来说它在做什么?我首先认为这与索引数组中的变量有关……但我不确定。

0 投票
2 回答
2888 浏览

mips - MIPS 指令 sll 的正确语法是什么?

移位量应该是立即数还是存储在寄存器中的值?两者都有效吗?

我有不同的网站告诉我不同​​的事情,我很困惑。

根据我的研究,应该像这样使用 sll(逻辑左移)指令:

这使得 $d = $t 向左移动了 h 次。

有人告诉我 h 应该是立即数,但我想知道是否可以将寄存器用作第三个参数,并将该寄存器内的值用作移位量。这也行吗?

0 投票
3 回答
13601 浏览

mips - 扩展 MIPS 数据路径以实现 SLL 和 SRL

这是数据路径:

所以这似乎是一个很常见的问题,但我似乎找不到关于如何扩展数据路径以实现 SLL 和 SRL 的任何答案。

这就是我的想法,但我不完全确定:

在寄存器文件旁边的读取数据 1 旁边需要另一个多路复用器。该多路复用器将读取数据 1 (rs) 和读取数据 2 (rt) 作为输入。如果我们不进行移位操作,它将选择读取数据 1,如果我们正在执行移位操作,它将选择 rt(因为 sll 和 srl 使用 rt,而不是 rs)。然后将其馈入 ALU。

接下来,我们需要将 Instruction[10:6](移位量)从 Instruction[15:0] 中分支出来,然后将 Instruction[10:6] 馈送到 ALU 的另一个端口。这是正确的想法吗?

0 投票
0 回答
892 浏览

arrays - 检查 MIPS 数组中零的数量

我有一个问题如下:

给定内存中的一个 32 位有符号整数数组及其一个寄存器中的长度,编写一个 MIPS 程序来计算该数组包含多少个零。假设数组从 Ox12345678 开始,并且数组的长度已经存储在 $1 中。零的个数应该存储在$2中,这个mayor一开始可能不会用零初始化。有关 MIPS 组装说明,请参阅表 1。

这是我自己的想法,但我有一个主要问题:

1)我认为如果我有子例程,我需要使用sw $ra, 4($sp)andaddi $sp,$sp,-8和 and从堆栈中推送然后弹出数据sw $fp, 0($sp)。但是,使用我的程序,我有一个 break 子句,它只在某个条件下移动到子程序(如果某物是 $0)。所以我不jal给子程序,我beq给子程序。我怎样才能修改我的代码来做到这一点?

这是我当前的代码:

0 投票
2 回答
285 浏览

c - 关于将 C 转换为汇编语言的字长按 4 缩放的问题

我是汇编语言的初学者,所以我希望任何给我答案的人都可以解释得更具体。

问题是从 C 语言转换为汇编语言。

C代码是:

iand kare in $s3and $s5and and 数组save[]的基数在$s6

答案就在图中。

数字

我的误解是,为什么$S3 multiple 2^2(==4),然后存储到$t1

我在stackoverflow上查看了类似的问题,有人说“你应该把基数和索引加在一起,记住要按4来缩放字长。”

但是因为我是初学者,所以我还是一头雾水。

例如,

  1. 一个周期后,i == 2(in $S3)。

  2. 然后重新开始,i == 2乘以$S34,我们在这里得到 8,然后写入$t1.

那么有一个问题,为什么是8?我认为我们需要的save[2]不是save[8].

我想我可能会对价值和地址感到困惑。

另一个问题是:这些寄存器有多少$S1$t1?我认为是 32 位,所以应该是 1 个字。

0 投票
1 回答
72 浏览

arrays - 有人可以解释以下 MIP 代码吗?

f,g,h,i,j == $s0-$s4。数组 A 和 B 的基地址是 $s6 和 $s7

据我了解,第一行取 f*4 的值并将其存储在 $t0 中。我被告知我们有第一行,因为数组包含 4 字节值。请解释其余部分。我知道程序正在某处访问数组,但我不理解语法,它看起来就像数组 A 的基本情况被添加到 f*4 中。谢谢。

0 投票
1 回答
189 浏览

assembly - 使用公式转移 MIPS

我正在学习 MIPS,并且来自程序编程背景,但事实证明这很困难。这是我在换档时遇到的一个问题。如果在回答它时有任何指示,将不胜感激。

假设 rt 是一个包含整数的寄存器。解释为什么指令

有投放效果

在寄存器 rd

0 投票
0 回答
136 浏览

assembly - MIPS 左移逻辑

编写下面代码的另一种方法是什么?

我担心这段代码实际上并没有将 1 移到第 24 位。那么另一种写法是什么?

提前致谢。