问题标签 [immediate-operand]
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 - ARM 的 MOV 指令如何以大数作为第二个操作数?
我刚开始学习ARM汇编语言,不清楚如何使用MOV将立即数转移到寄存器中。
从 ARM 参考手册和我的教科书中,都说 MOV 指令后面的立即数范围是 0-255。但是当我在自己的 PC 上使用 ADS 1.2 IDE 进行测试时,指令
表现良好。根据规范,数字 0xFFFFFFFF 是否超出范围?
assembly - MUL 指令不支持立即数
我已经阅读了一些教程和示例,但我无法理解MUL
指令的工作原理。我用过ADD
,SUB
没有问题。显然,这条指令将其操作数乘以寄存器中的值。
哪个寄存器(eax、ebp、esp 等)乘以第一个操作数?结果存储在哪个寄存器中,所以我可以将它移到堆栈中?抱歉,我只是在学习 x86 汇编。
当我尝试编译这一行时......
我明白了,Error: suffix or operands invalid for 'mul'
。谁能帮我吗?
assembly - 如何在 x86 上使用 AT&T 语法将立即字节添加到长寄存器?
根据我阅读英特尔手册的理解,应该可以编写类似的指令add $0x7f, %ebx
,并且应该将其编码为83 /0 ib
总共三个字节。
但是,当我这样做时(无论我使用add
、addb
还是addl
),它总是将立即值“提升”为 32 位值并编码为81 /0 id
并占用六个字节。adc
,等也存在同样的问题sub
。请注意,我在 GNU 中使用 AT&T 语法as
。
我一直在寻找解决方案超过一天,但没有找到。有人可以请教吗?
assembly - 修复后常量无效?
出于某种原因,当我尝试编译这段代码时,编译器会说syscall.s:72:invalid constant (0x172) after fixup
:
我不知道它为什么这样做。当我将一个较小的常数放入r7
时,它可以正常工作。但是随着数字的增加,它会吐出这个错误。我通过mov r7, #300
and临时修复了它add r7, #70
,达到了预期的效果。仍然不确定是什么导致了错误。
assembly - 为什么在带有 DC.W(定义常量)的数字之前不需要 #,只有指令?
我有这行代码:
这基本上意味着X = 5
但不应该X DC.W #5
?
使用 MOVE 时,我总是需要#
assembly - 为什么在 ARM 汇编中使用 LDR 而不是 MOV(反之亦然)?
我正在浏览本教程:http ://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/os/ok01.html
组装的第一行是:
第二个是:
我以为ldr
是为了将内存中的值加载到寄存器中。但似乎这=
意味着 0x20200000 是一个值而不是内存地址。两条线似乎都在加载绝对值。
assembly - 了解 ATT 组装(立即)
假设我有以下装配线
我究竟将什么存储到 %edi/%edx 寄存器中。
基本上,如果我要将此代码转换为 C 程序,我是否会将一些变量初始化为 -1 和 1,因为这就是我的看法,这就是我认为我感到困惑的地方。
我理解立即 =“一些常数”,但这是什么意思?
c++ - 为 arm mov 获取有效 imm num 的快速方法?
Arm mov 有一个限制,即立即数必须是 2 的倍数旋转的 8 位,我们可以这样写:
但我们不能这样写:
0x5000 可以拆分为 0x5000 + 1,我的意思是,一个有效的立即数和一个小数的总和。
那么对于给定的 32 位数字,如何快速找到最接近的有效立即数?像这样:
assembly - 如何在arm中编码立即值?
假设有这样一个 inst:
机器码是
05 CA 8C E2
和
但是如果我们知道 0x5000,我们怎么能得到 101000000101?这是反向转换一一对应吗?谢谢。
assembly - at&t 汇编语法中带 $ 或不带 $ 符号的数字有什么区别?
假设 .data 部分有以下项目:
在代码中,
我相信使用 $ 符号,它会是常数,所以 %eax 会有内存地址,但是 %ebx 呢?
两条指令有什么不同?