cpu-registers

    0热度

    1回答

    给出下面的汇编指令 mov ax, bx add ax, di 我如何写一个指令有作为这两个同样的效果?

    -1热度

    1回答

    我可以使用mov作为源和目标的间接操作数吗? E.g. mov eax, OFFSET foo mov esi, OFFSET bar mov [eax],[esi + LENGTHOF bar] 从我已经试过我猜你不能因invalid instruction operand错误。但是我没有阅读任何明确声明你不能这么做的地方,所以我想确保它不是由于其他错误。

    0热度

    1回答

    我正在研究我的研究程序的汇编代码。我刚刚注意到一个JPEG程序的汇编代码片段,这对我来说有点混乱。在某个时间点,一个值被加载到寄存器(%rcx)中,但是在代码的后面再次被赋值为另一个值,而没有使用先前的值。这是我缺少的东西,还是编译器中的正常情况? 我使用gcc 4.7.3编译-O3优化代码。为了得到汇编代码我使用下面的命令: objdump的--prefix-地址--disassemble -d

    0热度

    1回答

    我正在研究一个项目,其中包括将汇编项目迁移到C代码。我已经完成了很多工作,但是我遇到了一个我不能完全理解的指导。 正是这种之一: ldi ZH, high(V_avgbuf) 其中V_avgbuf是一个缓冲器保持8×24位V样例。它是这样定义的: V_avgbuf: .byte 24 ; 8 x 24-bit V samples 我的问题是,在指令执行后,这是ZH寄存器的内容? (ZH是一

    2热度

    1回答

    在我的电脑组织过程中,我在这些基本的MIPS指令来连接寄存器: lw $to, AddrConstant4($s1) //&t0 = constant 4 add $s3, $s3, St0 //$s3 = $s3 + $t0 ($t0 == 4) 我的老师说$s1是寄存器地址和常量4存储在内存中。 内存地址和寄存器地址在我眼中似乎是断开的。 我想问一下计算机如何从$s1, 的寄存器头地

    0热度

    1回答

    我在一个陌生的情况我已经编写自己进入,被困我!我正在开发一个操作系统课程,我们正在编写一个非抢先式调度程序,我处于需要在上下文切换中对时间测量进行简单计算的情况。 对于我平均计算我需要与小数的除法,我的代码现在从汇编程序的计算调用C函数并打印结果到屏幕,这个C函数使用双,后来我意识到:双因为GET_TIME(C函数)函数的上下文切换前右称为和后右分裂将导致更改的x87寄存器。有没有办法做十进制除法

    0热度

    1回答

    例如,我想在寄存器中的DWORD值移动到一个存储器位置打的单词,但我得到错误: mov [arr + eax*TYPE arr], edx ; error: operands must be same size []括号中解除引用到类型WORD的数组元素。 我已经试过这样做,以及: mov dx, edx ; error: operands must be same size. m

    0热度

    1回答

    这次是相当简单的问题。如何编写以在Assembly中筛选单个寄存器的内容?我有点厌倦了调用DumpRegs来查看一个寄存器的值。 我在Visual Studio和Irvine32.lib中使用x86架构和MASM。

    0热度

    1回答

    public class RegBoolMRSWRegister implements Register<Boolean> private boolean old; private SafeBoolMRSWRegister value; public void write(boolean x) { if (old != x) { valu

    0热度

    1回答

    我想编写一个使用临时寄存器的小汇编程序。当我说临时寄存器时,我的意思是它不是一个输入或输出寄存器,用于限制asm块。我可以选择任何寄存器,然后将其包含在clobber列表中,但我认为编译器可以选择更好。处理这个问题的正确方法是什么?我在网上找到的唯一建议是将其列为输出寄存器,然后不实际使用输出。