cpu-registers

    6热度

    1回答

    为什么我们push ebp作为Assembly函数的被调用者中的第一个动作? 据我所知,我们用mov edi, [ebp+8]来得到传入的变量,但我们的esp已经指向了调用函数的返回地址。我们可以通过mov edi, [esp+4]或者如果我们推动了被调用的寄存器,然后mov edi, [esp+16],轻松地访问传入的变量。 那么,为什么你需要在函数中管理那些额外的寄存器在cpu中(ebp)?即

    2热度

    1回答

    我想获得一些帮助这个表达式转换成4种方法的命令: z=3*(x+2)-2*y 这里是我的尝试的方法: 通过堆栈: push 2 push -1 mult push y mult push x push 2 add push 3 mult add pop z 由累加器: load y mult -2 store temp load x add 2 mult 3

    1热度

    1回答

    为什么它很重要,在保存的寄存器中的数据究竟会发生什么;它是否被删除或用新值覆盖?这些新的价值从何而来?如果我不清楚任何事情,请在下面评论。

    2热度

    1回答

    你好,我是这个网站的新手,如果我的问题有任何问题,我 提前道歉。我在这里看到过类似的问题,但它并不是专门回答我的问题。 我正在参加英特尔微处理器课程,并阅读有关微处理器和寄存器,我对微处理器之间的寄存器差异感到困惑。例如,我知道x86有8个通用寄存器,x386DX除寄存器数外,总共有16个寄存器,这是两个微处理器寄存器之间的主要区别?

    1热度

    1回答

    这里是一个C源代码示例: register int a asm("r8"); register int b asm("r9"); int main() { int c; a=2; b=3; c=a+b; return c; } 而这是使用一个臂gcc交叉编译器生成的汇编代码: $ arm-linux-gnueabi-gcc -c glo

    2热度

    1回答

    我可以使用说四个通用寄存器说​​r8,r9,r10,r11每个与MOV指令独立操作,并在CPU在单个时钟中做所有这些指令的印象? 我想知道,因为根据Agner Fog的指令表,它说MOV指令的倒数吞吐量是0.25。这意味着CPU应该能够在每个周期执行4个MOV操作。或者我误解了所有? 我是一个noob,自从两个月以来一直在MASM学习Assembly(主要是为了学习调试注册表的工作方式,它非常有趣

    5热度

    2回答

    维基百科给出了内存数据寄存器(https://en.wikipedia.org/wiki/Memory_buffer_register)和内存缓冲寄存器( https://en.wikipedia.org/wiki/Memory_data_register)的类似定义。 然而,其对处理器寄存器页区分这两个没有说什么将它们分开(https://en.wikipedia.org/wiki/Proces

    -1热度

    2回答

    我想获得x86机器上所有可用寄存器的列表。 我的主要目标是获得名称列表,即使是一个简单的列表,只需要所有寄存器的名字就足够了(没有任何描述);我会采取任何东西,shell实用程序,c库,posix库,伪文件系统设置...我愿意使用任何东西。

    0热度

    1回答

    我读过有关部分寄存器 的解释,想明白为什么这个代码:如果EAX持有非签约正数 XOR EAX,EAX MOV AX, BX 只会工作,但如果有一个签名的负在eax的号码 你需要确保你添加的新位是111 ..,我明白它与二进制补码 但我仍然不明白它。 编辑: 我明白上面的代码将工作无论哪种方式 我想知道你为什么会需要垫这些额外1的(当我这样做不是零EAX)

    0热度

    1回答

    如果使用旧段寄存器是过时的,为什么在当前的日子确实还存在时,我有这样的: rep movsb %ds:(%rsi),%es:(%rdi) 这是什么“DS”和“ES”干什么?没有这些细分市场就不一样了?