instructions相关内容

MIPS向左加载字(LWL)和向右加载字(LWR)指令的作用是什么?

我最近一直在阅读MIPS指令集,突然发现了两条我在其他指令集中没有见过的不寻常的指令。 我环顾四周,想找出这些指令到底有什么作用的合理解释,但我所能做的就是它们以某种方式与未对齐的内存访问相关。 例如Wikipedia says: MIPS I要求所有内存访问都与其自然字边界对齐,否则会发出异常信号。为了支持高效的未对齐内存访问,存在以“Left”或“Right”为后缀的加载/存 ..

指令对汇编语言中的操作数做了什么?

‘and’指令在汇编语言中做什么?我被告知它检查操作数的位顺序,并将1设置为True,其他任何值设置为False,但我不知道它实际做了什么,也不知道它对代码有什么影响。 推荐答案 AND指令以以下方式比较两个操作数中的位: Bit position 1234 5678 Operand A -- 1101 1001 Operand B -- 1001 0111 ..
发布时间:2022-06-10 15:13:29 其他开发

流水线会影响时钟时间还是每条指令的周期(CPI)?

我的书提到“根据您认为的基线,这种减少可以被视为减少每条指令的时钟周期数(CPI)、减少时钟周期时间或组合。如果起点是每条指令占用多个时钟周期的处理器,则流水线通常被视为降低CPI。” 我不能理解的是流水线会影响CPI或时钟周期,因为在流水线的情况下,时钟周期被视为最大阶段延迟+锁存延迟,所以流水线确实会影响时钟时间。此外,它还会影响CPI,因为在流水线的情况下,它会变为1。我是不是错过了什么概 ..
发布时间:2022-04-09 18:32:10 其他开发

像Docker这样的集装箱化软件是如何翻译CPU指令的?

我最近遇到一个bug,其中python库使用某个CPU指令,该指令存在于一个x86处理器上而不存在于另一个x86处理器上,从而导致一个系统上的程序意外崩溃(非法指令),而另一个系统上没有。这让我想到了容器化为我的软件创建定义良好的运行时环境的好处。但当我意识到这是多么低的水平时,我的大脑陷入了停顿,我无法通过推理和互联网上的阅读来计算出,像docker这样的软件的隔离程度达到了什么程度。 问 ..
发布时间:2022-02-28 21:40:34 其他开发

用于说明的小弹出窗口,例如四方的

在看到新的foursquare 应用程序的最后一个屏幕截图和他们的气球状卡通说明后,我想在我的应用程序中创建其中的一些. 我发现了一个关于 iPhone 的类似问题用于说明的小弹出窗口...如何? 这是foursquare应用程序的另一个截图: 我想知道如何使用 Android 实现这一目标. 提前感谢您的帮助. 更新:这是我目前所能做到的,但添加了一些带有自定义绘制 ..
发布时间:2022-01-20 22:49:47 移动开发

为什么 ARM 芯片的指令名称中带有 Javascript(FJCVTZS)?

FJCVTZS 是“浮动的"-point Javascript 转换为有符号定点,向零舍入".Arm v8.3-A 芯片及更高版本支持它.这很奇怪,因为您不希望看到 JavaScript 如此接近裸机. 我可以找到该指令作用的解释,但找不到它存在的原因.这个线程说“它作为单个指令存在是因为 JS 缺少整数类型意味着某些用例经常因为没有好的算法原因而需要此操作.".这似乎是合理的,但我想要更详 ..

ARM指令集中的缩写(Rn, Rd, ...)是什么意思?

最近我检查了 ARM Cortex-M3 处理器的指令集.例如: 添加 , , 这些缩写的确切含义是什么?我猜他们的意思是不同类型的地址,比如直接寻址、相对寻址等等.但究竟是什么? 谢谢! 解决方案 基础知识: Rd 是目的地,Rn 和 Rm 是来源.它们都是通用整数寄存器;FP 将使用 Sd/Sn/Sm 或 Dd/Dn/Dm 单人或双人. AR ..
发布时间:2022-01-17 13:48:30 其他开发

ARM 汇编中 ADRP 和 ADRL 指令的语义是什么?

ADRP PC 相对偏移处的 4KB 页面地址. ADRL 将相对于 PC 的地址加载到寄存器中.它类似于 ADR操作说明.ADRL 可以加载比 ADR 更广泛的地址,因为它会生成两条数据处理指令. 具体来说, ADRL 汇编成两条指令,一条是 ADRP,然后是 ADD.如果汇编器不能用两条指令构造地址,它产生重定位.然后链接器生成正确的偏移量.ADRL 产生与位置无 ..

CPU 如何从 RAM 访问应用程序和数据

在将应用程序加载到 RAM 并打开文件(因此文件的数据也存储在 RAM 中)之后,我无法理解 CPU 如何从 RAM 访问应用程序和数据. 据我了解,CPU 只是在程序计数器滴答作响或在中断后执行任务时从 RAM 获取指令.那么它如何访问应用程序和数据.是不是它没有并且仍然只是获取指令(例如,加载要在应用程序中打开的硬盘驱动器上的文件)并处理应用程序发出的任何请求,这些请求随后作为指令存储在 ..
发布时间:2022-01-11 23:39:52 其他开发

无符号数和二进制补码有符号数的哪些算术运算相同?

我正在设计一个简单的玩具指令集和附带的模拟器,并且我正在尝试找出支持哪些指令.在算术方面,我目前有无符号加减乘除.但是,我似乎无法找到以下问题的明确答案:哪些算术运算符需要有符号版本,哪些是无符号和二进制补码有符号版本? 因此,例如,二进制补码中的 1111 等于 -1.如果你给它加 1 并假装它是一个无符号数,你会得到 0000,即使认为它是 -1 也是正确的.但是,这适用于所有数字吗?那 ..
发布时间:2022-01-09 19:03:01 其他开发

x86 暂停指令如何在自旋锁中工作 * 和 * 是否可以用于其他场景?

pause 指令通常用于测试循环spinlock,当其他一些线程拥有自旋锁时,以减轻紧密循环.据说相当于一些NOP指令.有人能告诉我它究竟是如何用于自旋锁优化的吗?在我看来,即使是 NOP 指令也是浪费 CPU 时间.它们会降低 CPU 使用率吗? 另一个问题是我是否可以将暂停指令用于其他类似目的.例如,我有一个繁忙的线程,它不断扫描某些地方(例如队列)以检索新节点;然而,有时队列是空的,线 ..

“leal 0x10(%ebx), %eax"中的0x10是什么?x86汇编指令?

关于这条 LEAL 指令,0x10 的功能是什么?是乘法还是加法还是别的什么? leal 0x10(%ebx), %eax 有人可以澄清一下吗?这是 Linux 机器上的 x86 汇编程序. 解决方案 leal 或 lea 的全称是“加载有效地址",它的作用正是如此:它进行地址计算. 在您的示例中,地址计算非常简单,因为它只是将偏移量添加到 ebx 并将结果存储在 eax 中: ..
发布时间:2021-12-18 09:07:39 其他开发

汇编编程 - WinAsm 与 Visual Studio 2017

我是来问你一些关于 VS2017 的. 过去,我曾将 WinAsm 用于 MASM,但从未遇到过问题. 但是,当我尝试在 VS2017 中使用 MASM 做某事时,我总是会遇到问题和其他东西... 我已经在整个互联网上检查了“如何为 MASM 设置 VS",但没有任何帮助,因为我总是遇到麻烦...... 有没有什么方法可以让 Visual Studio 2017 for MASM3 ..
发布时间:2021-12-18 09:03:38 其他开发

哪些 x86 指令需要两个(或更多)内存操作数?

我以为是零.但是,我在这里看到, 具有两个内存操作数的指令极为罕见 我找不到任何可以解释存在哪些指令(尽管很少见)的内容.有哪些例外? 解决方案 我找不到任何可以解释这种稀有性的东西. 一条 x86 指令最多可以有一个 ModR/M + SIB + disp0/8/32.所以有两个显式内存操作数的零指令. x86 内存-内存指令都至少有一个 隐式 内存操作数,其 ..
发布时间:2021-12-18 08:53:57 其他开发

x86 LOOP 指令究竟是如何工作的?

mov ecx, 16环顶:...循环回路 这个循环会执行多少次? 如果开始时 ecx = 0 会发生什么?在这种情况下,loop 是跳跃还是失败? 解决方案 loop 与 dec ecx/jnz 完全一样,只是它不设置标志. 这就像 C 中 do {} while(--ecx != 0); 的底部.如果执行进入带有 ecx = 0 的循环,则换行-around 表示循环将 ..
发布时间:2021-12-08 23:33:33 其他开发

`testl` eax 对 eax?

我正在尝试理解一些程序集. 汇编如下,我感兴趣的是testl这一行: 000319df 8b4508 movl 0x08(%ebp), %eax000319e2 8b4004 movl 0x04(%eax), %eax000319e5 85c0 testl %eax, %eax000319e7 7407 je 0x000319f0 我试图理解 %eax 和 %eax 之间的 testl ..
发布时间:2021-11-30 11:16:01 其他开发

ARM汇编中ADRP和ADRL指令的语义是什么?

ADRP 相对于 PC 偏移的 4KB 页地址. ADRL 将与 PC 相关的地址加载到寄存器中.它类似于 ADR操作说明.ADRL 可以加载比 ADR 更广泛的地址范围,因为它生成两个数据处理指令. 具体来说, ADRL 汇编为两条指令,一条 ADRP 后跟 ADD.如果汇编器不能用两条指令构造地址,它产生重定位.然后链接器生成正确的偏移量.ADRL 产生与位置无关 ..

ARM 程序集不能同时使用立即数和 ADDS/ADCS

我目前正在尝试使用汇编加速 Cortex-M0(飞思卡尔 KL25Z)上的一些 C 函数.这个最小的测试程序有问题: @.syntax 统一.cpu 皮质-m0.文本.global 测试.代码 16测试:移动 r0, #0添加 r0, r0, #1bx lr 当我尝试将 .s 文件组装为 .o 文件时,出现此错误 $ arm-none-eabi-as test.s -o test.otest ..
发布时间:2021-11-17 22:17:17 其他开发