cpu-registers

    2热度

    1回答

    我可以使用'r'来获取CPU寄存器标志的信息。 1.我能理解吗? eflags 0x00000082: id vip vif ac vm rf nt IOPL=0 of df if tf SF zf af pf cf 0x00000082= 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 2.如何更改标志?通过“设置”命令? <bochs:5> set efla

    5热度

    1回答

    我想在我的C代码中编写一些内联ARM汇编。对于这段代码,我需要使用一个或两个以上的寄存器作为输入和输出到函数。我知道如何使用clobber列表来告诉GCC我将使用一些额外的寄存器来执行我的计算。 但是,我相信,海湾合作委员会享有自由洗牌周围寄存器用于优化时什么。也就是说,我觉得使用固定寄存器进行计算是个不错的主意。 什么是使用一些额外的寄存器既不是输入也不是我的内联汇编的输出,不使用固定的寄存器的

    0热度

    1回答

    当一个值从一个寄存器复制到另一个寄存器时,源寄存器中的值 会发生什么变化?目标寄存器中的值会发生什么变化。

    2热度

    2回答

    我目前正在写作a toy compiler作为家庭作业,针对MIPS架构。 有18个寄存器从高级语言翻译时,其通常可用:s0到s7其是被调用方保存,和t0到t9其是呼叫者 - 保存。由于这18个寄存器可用,出现了一个问题:在执行函数翻译时,我应该选择哪个寄存器。 每一组都有其优点和缺点: 被叫方保存的寄存器必须保存到分别从堆的开头和一个函数的结束,恢复。 调用者保存的寄存器必须分别在调用子例程之前

    1热度

    1回答

    如何将32位CPU寄存器的内容放入字节数组中?

    4热度

    4回答

    Ohai, 我目前正在尝试实现一个8086 ASM调试器用于学习目的。直到现在,我试图用char数组来模拟8位和16位寄存器,但是这种方法在使用AX,AL和AH的时候让我感到非常紧张。 #define setAL() { int i; for (i = 0; i < 8; i++) AL[i] = AX[i]; } char AX[16] = {0, 1, 1, 1, 1 ,1 ,1, 0, 0

    16热度

    2回答

    我目前正在学习用于Intel处理器的汇编语言。 由于栈“向下增长”,为什么我们要以访问特定的元素 [ebp + 8] ;; This will access the first param 我konw我们要跳过旧的EBP值和返回地址添加,这就是为什么我们使用8(因为每个长度都是4个字节)。 这有点奇怪。 而且,如果EBP是ESP备份副本,什么是EBP的主功能 防爆值: _start: ;;

    -1热度

    1回答

    我读, 现在我想知道如果它存储的结果或结果本身(值)的地址? 谢谢。

    2热度

    1回答

    我想在我的断言函数中打印$ra(返回地址)寄存器以用于调试目的。我正在研究MIPS CPU。 我试着下面的代码,但编译器不喜欢它: unsigned int RA; unsigned int* pRA = &RA; asm volatile("sw $ra, %0" : "=r" (pRA)); 或 static volatile unsigned int RA; asm ("mov $

    2热度

    3回答

    通读以下内容instruction table manual我发现8-bit registers的整数乘法运算速度要快得多。 在正常桌面cpu环境下,8-bit register是什么意思?存储在32位寄存器中的值是否恰好在8位范围内?没有实际的8位寄存器,对吧?