instructions相关内容

在两个内存地址之间移动

我正在尝试学习汇编语言(所以请多多包涵),并且在此行上出现编译错误: mov byte [t_last], [t_cur] 错误是 error: invalid combination of opcode and operands 我怀疑导致此错误的原因仅仅是mov指令无法在两个内存地址之间移动,而是半小时的谷歌搜索,而我却无法确认这一点-是这种情况吗? 此外,假设我是对 ..
发布时间:2020-09-12 21:33:01 其他开发

`testl` eax对抗eax?

我正试图了解一些汇编. 如下所示,我对testl行感兴趣: 000319df 8b4508 movl 0x08(%ebp), %eax 000319e2 8b4004 movl 0x04(%eax), %eax 000319e5 85c0 testl %eax, %eax 000319e7 7407 ..
发布时间:2020-09-12 21:23:21 其他开发

无序指令执行:保留提交顺序吗?

一方面,维基百科记录了乱序执行的步骤: 指令提取. 将指令分派到指令队列(也称为指令缓冲区或预留站). 指令在队列中等待,直到其输入操作数可用为止.然后允许该指令在 较早的说明. 将指令发布到适当的功能单元并由该功能单元执行. 结果排队. 仅在所有较旧的指令中将其结果写回寄存器文件后,该结果才被写回到寄存器文件.这称为毕业或退休阶段. 类似的信息可以在“计算机组织和设计"书中 ..

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

我认为那里是零.但是,我在这里看到 带有两个内存操作数的指令极为罕见 我找不到任何能解释什么指令的资料,尽管很少见.有什么例外? 解决方案 我找不到任何能解释稀有性的东西. x86指令最多可以具有一个ModR/M + SIB + disp0/8/32.因此,零指令具有两个显式内存操作数. x86存储器指令全部具有至少一个隐式存储器操作数,其位置被烘焙到操作码中, ..
发布时间:2020-07-24 07:59:00 其他开发

条件指令(cmov)和跳转指令之间的区别

我很困惑在汇编中在哪里使用cmov指令以及在哪里使用jump指令? 从性能的角度来看: 两者的区别是什么? 哪个更好? 如果可能,请举例说明它们的区别. 解决方案 movcc 是所谓的 predicated 指令.花哨的是“该指令在条件(谓词)下执行"的意思. 在执行算术运算(尤其是比较指令)之后,包括x86在内的许多处理器都将条件代码位设置为指示运算结果的状态. ..
发布时间:2020-07-01 01:12:02 其他开发

lc3 LDR指令和存储的值

我不知道为什么After instruction “LDR R3, R0, 2” is executed, the value stored in R3 is x370C.在此指令中2代表什么?它看起来不像是一个崇高的价值.我知道此时R0包含x370C.有人可以帮忙吗?非常感谢! .ORIG X3700 LEA R0, A LDI R2, C LDR R3, R0, 2 AND ..
发布时间:2020-06-29 19:40:40 其他开发

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

在将应用程序加载到RAM中并打开文件(因此文件的数据也存储在RAM中)之后,我很难理解CPU如何从RAM中访问应用程序和数据. 据我了解,当程序计数器滴答或在中断后执行任务时,CPU只是从RAM中获取指令.然后如何访问应用程序和数据.是不是它仍然并且仅获得指令(例如,将文件加载到要在应用程序中打开的硬盘驱动器上)并处理由应用程序发出的所有请求,这些请求随后作为指令存储在RAM中(例如保存一个 ..
发布时间:2020-05-21 19:00:56 其他开发

[ebp * 2]是否引用DS或SS段?

IDM说,如果将EBP用作基址寄存器,则存储器op将使用SS段.结果,[ebp + esi]和[esi + ebp]分别引用SS和DS段.请参阅NASM的文档: 3.3有效地址. 在同一部分中,NASM提到了如何通过将[eax*2]替换为[eax+eax]来生成较短的机器代码. 但是,NASM也会为[ebp*2]生成[ebp + ebp](即没有基址寄存器). 我怀疑[ebp+e ..
发布时间:2020-05-16 21:07:48 其他开发

Lui指令的立即数范围

我不确定lui指令中立即数的范围是什么. 我组装时: lui $t0,32768 它成功运行,没有错误. 但是, lui $t0,-32768 通知-32768超出范围. 解决方案 在MIPS中,I型指令的立即数始终为16位长.这意味着如果汇编器将其视为未签名,则范围将为[0,65535],对于已签名的情况将范围为[-32768,32767] 但是您 ..
发布时间:2020-05-09 23:09:45 其他开发

为什么在单个CPU内核上没有发生指令重新排序问题?

从此帖子: 在单个CPU内核上计时的两个线程不会遇到重新排序的问题.单个内核始终知道其自身的重新排序,并将正确解析其自身的所有内存访问.但是,多核在这方面是独立运行的,因此不会真正知道彼此的重新排序. 为什么在单个CPU内核上不会发生指令重新排序问题?本文不做解释. 示例: 以下图片摘自法案中涉及的内存重新排序: 以下记录: 我认为记录的指令也会在单个CPU上引起问题, ..
发布时间:2020-05-08 19:26:35 其他开发

汇编编程-WinAsm与Visual Studio 2017

我在这里想问您一些有关VS2017的问题. 过去,我曾将WinAsm用于MASM,但从未遇到过问题. 但是,当我尝试在VS2017中使用MASM进行操作时,我总是会遇到问题和麻烦... 我已经检查了整个互联网上有关“如何为MASM设置VS"的信息,但没有任何帮助,因为我总是遇到麻烦... 有没有办法将Visual Studio 2017用于MASM32/64bit而没有任何麻烦呢? ..
发布时间:2020-05-06 09:05:41 其他开发

在C程序中,BITWISE AND操作如何可能比ARITHMETIC ADDITION操作花费更多的CPU时钟?

我想测试按位运算是否真的比算术运算要快.我以为是. 我写了一个小的C程序来检验这个假设,令我惊讶的是,加法运算平均比按位与运算要少.这让我感到惊讶,而且我不明白为什么会这样. 据我所知,从较低有效位进位的进位应进位到下一位,因为结果也取决于进位.对我来说,逻辑运算符比加法运算慢是没有道理的. 我的鳕鱼在下面: #include #include ..

机器值类型是什么“其他"? llvm SDnodes中的均值

我试图更深入地了解llvm中的指令选择过程,为此,我正在逐步调试CodeGenAndEmitDAG函数.在合并步骤之前,我已经打印了一个小功能(见下文),即上述功能的第一步.在图中,我看到了蓝线,并且它们似乎总是指向"ch",我认为这意味着“其他"机器值类型.我不明白蓝线的含义...这种依赖性是什么?而且,我对"ch"的含义是否正确?是“其他"吗? 解决方案 虚线蓝色箭头表示之间的非数据流依赖性 ..
发布时间:2020-05-02 10:53:43 其他开发

检测AES-NI CPU指令

最近的Intel和AMD CPU支持特定的 AES指令,可提高加密性能和解密. 是否可以检测何时调用这些指令?例如,通过编写监视发送到CPU的指令的内核模块?还是内核仍处于高级水平? 解决方案 我的理解是,类似 AESENC 不需要特殊特权,因此即使在内核中,也无法使用其中一种常见的错误处理程序来捕获它们.您也许可以使用QEMU或VirtualBox的修改版本来做到这一点,但这会有些 ..
发布时间:2020-04-25 11:45:09 其他开发

如何用十六进制编辑器更改指令?

我正在搞一些逆向工程,但我不知道如何用十六进制编辑器将jnz更改为jz。我知道它会因系统而异,但我不确定在哪里寻找这些信息。我正在使用Mac OS X 64位,并使用IDA Pro反汇编代码。 解决方案 如果您发现 jz ,它将看起来像 74 XX 或 0F 84 XX XX XX XX 。如果它是 74 ,请将其更改为 75 。如果它是 84 的那个,请将其更改为 85 。这些信息可以在英特 ..
发布时间:2018-06-07 17:00:59 其他开发

mtune如何工作?

有这个相关问题:海湾合作委员会:march与mtune有什么不同? 然而,现有的答案并没有比GCC手册本身更进一步。至多,我们得到: lockquote 如果你使用 -mtune ,那么编译器将会生成在任何一个 上都能运行的代码,但会支持在 上运行速度最快的指令序列,您指定的特定CPU。 和 -mtune = Y 选项可调整生成的代码在Y上运行速度快于其他可能运行 ..

如何编译Busybox?

(i9100和i9100p手机具有Exynos 4210 SoC,包括支持NEON的Cortex A9双核1.2Ghz处理器。) 我将编译最新的busybox源快照(我已经从官方网站今天的3月14日快照下载),因为它可以免费上传到互联网上,甚至可以自己免费 BusyboxInstaller.apk 因此许多busybox安装程序都有非常过时的版本,我想利用Cortex A9 cpu的可能优化 ..

如何在c ++中实现AND和OR操作

我有一个任务,即iam应该在C ++中实现MIPS处理器,并且MIPS指令之一是“AND”,而“OR”则MIPS指令表示为和$ s1,$ s2, $ s3 这意味着 $ s1 = $ s2(和)$ s3 $ s2和$ s3 寄存器表示为位,,,我如何使用c ++执行“AND”和“OR”操作 解决方案 p>在C ++中有二进制,逻辑和和或操作符。 int a,b = 1; in ..
发布时间:2016-10-30 16:36:12 C/C++开发