问题标签 [sign-extension]
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.
java - 在 Java 中签名扩展任意长度的位模式的最有效方法是什么?
例如,假设我将三个 10 位有符号整数打包成一个 Java 整数。
我可以轻松提取 10 位:
但现在我需要对最高位(右边的第 9 位)进行符号扩展。有没有一种快速的方法可以通过测试最高位和设置来做到这一点?
也许有一种更好的拆包方式,可以将标志留在原处。
mips - MIPS中的加载字节指令
我正在通过 MIPS 指令学习计算机体系结构。我有一个问题是:
0x10000000 处的内存包含 0x80 寄存器 $5 包含 0x10000000 执行 lb $8,0($5) 后寄存器 $8 中放入了什么?
我在想,当调用加载字节时,它将从 0x10000000 地址获取 0x80[10000000] 的 8 位,并将其加载到 $8 寄存器的前 8 位,并用零填充剩余位,使答案为 00000080 .但列出的正确答案是FFFFFF80。我不确定我是否理解它。有人可以帮忙解释一下吗?
mips - MIPS 中的“立即扩展到 32 位”是什么意思?
我正在阅读 MIPS 数据路径中的指令解码 (ID) 阶段,我得到以下引用:“一旦知道操作数,就读取实际数据(从寄存器)或将数据扩展到 32 位(立即数) 。”
有人可以解释“将数据扩展到 32 位(立即数)”部分是什么意思吗?我知道寄存器都包含 32 位,而且我知道立即数是什么。我只是不明白为什么需要将立即数从 26 位扩展到 32 位。
谢谢!
verilog - 如何在系统verilog中进行位扩展?
我想使用复制运算符 {} 在特定时间复制一个位,但我只得到我想要的第一位,而其他位是零,无论该位是零还是一。
我得到一个等于 00000001 不是 11111111
assembly - 在这种情况下,MOVSX 指令符号如何扩展输入?
我有以下反汇编:
[dest] = d5 cd e8 ca 68
我在下面给出了每条指令的解释和流程:
- 它从 [dest] 读取一个字节并将其存储在 eax 中。
- edx 的初始值为:F7FBB898。之后, movsx edx, al 指令它变为 FFFFFFD5。此时如何确保 edx 的值是 0x000000d5?
我在 [dest] 中的初始值应该是多少,以便在这些操作之后,eax 中的最终值是 0xd5 而不是 0xFFFFFFD5
assembly - movslq 是做什么的?
我很难找出movslq
指令的作用。谷歌不是很有帮助,这个列表上也没有这样的说明。在这里我读过
MOVSLQ 将值从 32 位源移动并符号扩展至 64 位目标。
我是这样理解的。该指令将一个值从 32 位源移动到 64 位目标,但确保 64 位目标中的数字的有符号值等于源中的数字,即在负数的情况下它填充前 32 位目的地为 1,否则为 0。
我的理解正确吗?如果没有,请解释我错在哪里。
编辑:
这不是这个主题的重复: assembly cltq and movslq difference。我的问题没有任何解释。你必须阅读整个答案 10 分钟才能说服自己。
assembly - 这是在 Mul 中使用 cbw 的正确方法吗?
我从 8bit 和 8bit 寄存器中得到乘法。但是,当你有一个 16 位和一个 8 位时,我们如何在乘法之前进行转换:
问题:需要提供260*19的代码片段,并打印结果。我做了:
c - 为什么 _mm_extract_epi16 没有得到预期的结果?
我在我的程序中发现了由滥用 SSE '_mm_extract_epi16' 指令引起的错误,如下面的代码:
如果提取的值为正,则我得到正确的值 2。相反,我得到错误的值“65533”。或者我可以使用下面的代码获得正确的值。
我不知道为什么会这样。
assembly - movsbq 和这个添加行做什么?
我试图弄清楚这些代码行的作用
movsbq (%rbx),%rcx
和
添加 (%rdx,%rcx,4),%eax
assembly - 如何隔离 64 位寄存器中的字节和字数组元素
我可以说这是一个超级简单的问题,但我还没有弄清楚。基本上,我只想能够将一个元素放入一个数组,并使用寄存器从中添加和减去一些数字,然后将结果放入我的结果变量中。
我知道解决方案与偏移量和索引有关,但我不明白我应该如何将一个数组元素放入寄存器。
我能做些什么?