- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发现 mul
和 imul
可用于将有符号数乘以无符号数。
例如:
global _start
section .data
byteVariable DB -5
section .text
_start:
mov al, 2
imul BYTE [byteVariable]
imul
与
mul
,结果仍然相同(
-10
)。
mul
和
imul
乘以
时完全相同签名 号码到
未签名 数量,或者它们之间有区别吗?
最佳答案
如评论中所述,上半部分不同。如果你不关心上半部分,你可以使用 mul
或 imul
, 在它们的所有形式中(单操作数形式产生上半部分,但在这种情况下你会忽略它)。
如果你确实关心上半部分,那么 mul
也不是 imul
自己工作,因为它们只是乘以无符号*无符号和有符号*有符号,但您可以很容易地修复它。
考虑到有符号字节的位权重为 -128、64、32、16、8、4、2、1,而无符号字节的位权重为 + 128, 64, 32, 16, 8, 4, 2, 1. 所以你可以表示x
的无符号值以签名格式(我知道这很令人困惑,但这是我能做的最好的)如 x + 256 x_7
(其中 x_7
是 x
的第 7 位)。最简单的查看方法可能是将其拆分:x + 2 * 128 * x_7
.这里发生的事情是补偿-128 权重,首先通过将第 7 位的值相加 128 次来删除它,然后通过再次执行一直到 +128 权重,当然这可以一步完成。
无论如何,乘以某个有符号数 y
并解决了 256 x_7 y + xy
,其中 xy
是 imul
的(双倍宽度)结果和 256 x_7 y
表示“如果设置了 y
的符号,则将 x
添加到上半部分”,因此可能的实现是(未测试)
; al has some unsigned value
mov dl, al
sar dl, 7
and dl, [signedByte]
imul BYTE [signedByte]
add ah, dl
关于assembly - 将有符号数乘以无符号数时,我应该使用 "mul"还是 "imul"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45495711/
MUL CL CL 是 BYTE 大小,它等于 AX = AL * CL MUL BX BX 是 WORD 大小,它等于 DX:AX = AX * BX MUL EBX EBX 是 DWORD 大小,
我正在尝试学习 Tensor Flow,因此我遵循了 https://pythonprogramming.net/tensorflow-neural-network-session-machine-l
我的代码中有错误,我已经阅读了文档,但仍然错误,维度必须相等是什么意思?但实际上我已经在代码中添加了一些层 model.fit() 这是我的代码: # USAGE # python train_sim
假设我已经在汇编机中实现了所有ADD、AND、SHF、JUMP、BR、LDW、LDB(加载字加载字节...)......除了MUL(多个)指令。现在我想编写汇编代码来操作MUL指令,该指令接收存储在0
我正在为 ARMv7 处理器编写指令。我想知道为什么我不允许在 MUL 指令本身中有一个常量值?您可以使用 ADD 和 SUB 指令,为什么不使用 MUL? 干杯 最佳答案 如果您查看 instruc
我已经实现了Point3D结构: use std::ops; #[derive(Debug, PartialEq)] pub struct Point3D { pub x: f32,
这就是问题所在:在第二个 mul 时,溢出标志被设置为 1;乘法是一个简单的 120*(-6) = -720,它包含在 16 位中......我不明白为什么。 .model small
我有以下 assembly 线: ... MOV ECX, 0x36EE80 MOV EDX, 0x95217CB1 MUL EDX SHR EDX, 0x15 MOV DWORD PTR SS:[E
我正在使用一个 MySQL 查询,该查询对四个表执行三个表连接。其中两个连接位于一对 MUL key 上。第三个连接是在一对主键上。查询需要一整分钟才能获取 100 行。 我相信两对 MUL key
全部, 假设我有以下 mysql 表testtable: +----------+------------------------------+------+-----+---------+-----
我有一个现有的表,我通过一个脚本过夜填充该表,该脚本读取二进制格式文件并将其转换为通过管道传输到 mysql 的一系列 replace 语句。该脚本存在错误,并且对每个二进制文件循环两次,因此每个 r
我正在用 Rust 创建一个简单的矩阵结构,我正在尝试实现一些基本的运算符方法: use std::ops::Mul; struct Matrix { cols: i32, rows:
这个问题在这里已经有了答案: Automatically implement traits of enclosed type for Rust newtypes (tuple structs wit
这个问题在这里已经有了答案: x86 Multiplication with 3: IMUL vs SHL + ADD (1 个回答) 关闭 1 年前。 让我们考虑以下函数: #include u
我有一个时间索引的 DataFrame,其中只有一部分数据是有效的(出于某些“外部”原因)。 我已经为有效数据制作了一个时间索引的Series 1 和数据无效的 NaN,所以我可以使用这是我的 Dat
数据 1 import pandas as pd #data 01 df_products = pd.DataFrame([{'Product ID' : 4109,'Price' : 5.0,'Pr
我有这段代码,它使用了 PBC 库: element_t pk, pk_temp; element_init_G2(pk, pairing); element_init_G2(pk_temp, pai
我正在尝试对附加了单位的求解评估的输出进行舍入。 例如: solve(Eq(x, 22/7 * seconds), x)[0] 输出: 3.14285714285714*s 有没有办法在保留 s 的同
HLSL 的 mul( x, y) 的参数表示 here : 这么说 如果 x 是 vector ,则将其视为行 vector 。 如果 y 是 vector ,则将其视为列 vector 。 这是否
// main.rs #[derive(Clone, Copy)] struct A(f64, f64); impl Mul for A where f64: From, T: Cop
我是一名优秀的程序员,十分优秀!