cpu-registers

    3热度

    5回答

    我记得前一段时间(32位以前的Intel处理器)的一些规则,当时相当频繁(至少对我来说)必须分析由C生成的程序集输出/ C++编译器(在我的情况下,当时是Borland/Turbo)来查找性能瓶颈,并将汇编程序与C/C++代码安全地混合。喜欢用SI报名参加这指针的东西,被用于返回值,该寄存器应该当一个汇编程序返回保存等AX 现在我在想,如果有一个为更流行的C一些参考/ C++编译器(Visual

    3热度

    3回答

    将程序集代码嵌入到C/C++程序中时,可以通过使用推送指令(或指定编译器支持的clobber列表支持它)来避免使用clobbering寄存器。 如果你包含内联程序集,并且希望避免推送和弹出clobbered寄存器的开销,有没有办法让gcc为你选择寄存器(例如,它知道没有有用的信息)。

    10热度

    2回答

    我已经用C++编写了一个“危险的”程序,它从一个栈帧来回跳转到另一个栈帧。目标是从呼叫堆栈的最低级别跳转到呼叫者,做一些事情,然后再次跳回,每次跳过所有呼叫。 我通过手动改变堆栈基地址(设定%ebp)和跳跃到一个标签地址做到这一点。它完全有效,与gcc和icc都没有任何堆栈腐败。这一天的工作是一个很酷的一天。 现在,我采取同样的程序,并用C重写它,这是行不通的。具体来说,它不适用于gcc v4.0

    2热度

    1回答

    在Win32上,使用非托管代码时,返回值通常存储在EAX寄存器中。当程序不在变量中保存返回值时这很有用。这很容易在Visual Studio调试器中看到。 有托管代码的等价物吗?

    12热度

    4回答

    我没有得到什么区别。

    6热度

    6回答

    我听过术语:寄存器,硬件寄存器,程序寄存器,寄存器文件。 所有这些有什么区别?并且,EAX寄存器的类型是什么?程序注册?

    4热度

    3回答

    我正在使用MIPS编写某些代码,并且我已经到了需要临时将结果存储在HI和LO特殊寄存器(均为4个字节宽)。这些指令是在我手上: divu s,t lo <-- s div t ; hi <-- s mod t multu s,t hi/lo < -- s * t ; 所以,divu店在HILO和其余部门的结果,而multu并将结果保存在LO乘法(低4个字节)和HI(高4个字节)。 后来,从

    9热度

    5回答

    所以我有一个功能,看起来是这样的: float function(){ float x = SomeValue; return x/SomeOtherValue; } 在某些时候,这个功能溢出,并返回一个非常大的负值。尝试追查正是这个是怎么回事,我添加了一个COUT语句,因此该函数是这样的: float function(){ float x = SomeVal

    7热度

    6回答

    在C,我可以分配一个寄存器变量,例如: register int i = 0; 我知道,Java是一种解释语言,并且是从CPU许多许多抽象的路程。 是否有任何机制可用于甚至请求(如果体系结构不允许它,那么什么),我的变量保留在寄存器中,而不是移动到缓存或主内存? 我不认为有什么办法,但我之前一直很惊喜。 谢谢