机器代码是直接馈入微处理器的数据,是处理器能够执行的唯一形式。它是可能的最低抽象级别,其中所有数据都是原始二进制流。机器代码几乎不可被人类读取,这就是通常使用装配的原因。
我已经在汇编中创建了一个非常小的应用程序。它将某些寄存器设置为0并进行乘法。没有什么花哨。但是,gcc给我不需要的机器代码增加了很多东西。 A ...
movzwl 0x402ac0(%rax,%rax,1),%eax和movslq 0x402740(,%rsi,4),%rdx在x86-64汇编中意味着什么?
我正在从事一些有关汇编的项目,遇到以下命令:lea(%rsi,%rsi,4),%rax lea(%r9,%rax,2),%rsi lea(%r8,%rdx, 4),%rax movzwl 0x402ac0(%rax,%rax,1),%eax movslq ...
CPU如何知道RAM中的地址是否包含整数,预定义的CPU指令或任何其他种类的数据?
这让我感到困惑的原因是,所有地址都包含1和0的序列。那么CPU如何将00000100(整数)与00000100(CPU指令)区分开?
我正在编写一个程序(在PEP9程序集中),该程序应该在开始时输出-1,然后以小写ASCII字符作为输入,将其转换为大写并输出。到目前为止,我有:...
当将x设置为零(x = 0)时,我的csapp书指出了两种方法。第一个:xorq%rcx,%rcx第二个:movq $ 0,%rcx它还告诉我们第一个仅占用3个字节,而第二个仅占用7个字节。...
什么是AMD ryzen 7 2700x指令集(用于创建汇编)
我要创建我的第一个汇编程序,所以我可以计划我自己的编程语言,我自己的操作系统等。这里有一个问题:我找不到我已经找到了ryzen 7 2700的指令集...
GAS提供了以下编码以下说明:推RBP#0x55的推RBX#0x53推R12#的0x41 0x54推R13#的0x41 0x55的从AMD64规范(页313):PUSH REG64 ...
我想将此指令更改为二进制或机器代码:addi $ s3,$ s1,-1000。我知道如何编码操作码,rs和rt,但我不知道如何将-1000转换为二进制。我知道怎么弄......
我仍在尝试开发MIPS汇编程序作为我的任务的一部分。我得到了这些输入和输出文件。 main:lw $ a0,0($ t0)begin:addi $ t0,$ 0,0#beginning ...
我需要从内存中的一个小代码段逐个读取指令,我必须找出内存中指令的大小。以下只是原始的一个例子......
我很难理解汇编和二进制之间的区别。我只需要了解链接二进制和汇编之间的关系。
如何编码子即时83/5操作码的操作数,如sub edx,0x3a?
我无法在GAS语法subl $ 0x3a,%edx中查看汇编指令,然后能够使用Intel手册手动生成匹配的机器代码......
我正在阅读ia-32指令格式,发现ModR / M是一个字节,如果需要,但如何确定是否需要,有人说它是由Opcode决定的,但是如何?我想知道......
我正在阅读MIPS数据路径中的指令解码(ID)阶段,我得到以下引用:“一旦操作数已知,读取实际数据(来自寄存器)或将数据扩展到32 ......
我正在阅读x86 / x64开发人员的手册,试图理解指令编码,并对来自段寄存器的mov感到困惑,即本页的第12和第13表格。那里有两个 ...
我对你如何处理这个问题感到有点困惑:考虑十进制数1027.这个值作为一个16位的二进制补码数存储在一个小端的地址124和125上......
我正在尝试在.text部分中用汇编语言定义一个字节。我知道数据应该转到.data部分,但我想知道为什么当我这样做时它会给我一个分段错误。如果我定义......
在x86机器代码中调用绝对指针的“正确”方法是什么?有没有一种方法可以在一条指令中完成它?我想做什么:我正在尝试构建一种简化的迷你JIT(......
为什么在intel x86程序集上将nop分配给0x90?直觉上我希望0x00会映射到nop(这也是xchg eax,ex在intel x86),就像ARM A32和其他一些......