对于下面的代码,如果我想将for循环转换为内联汇编,它将如何完成?(原谅奇怪的代码,我刚刚编写了.)
1)这是针对x86,使用visual studio
2)这是一个"如何使用在线组装"的问题,而不是"如何优化此代码"的问题
3)任何其他例子都没问题.我将在abit中考虑一些更好的示例代码.
好的,我希望这是一个更好的例子:
int doSomething(double a, double b, double c)
{
    double d;
    for(int i=100;i<200;i++)
    {
        d = a*a + b*b + c*c;
        if(d>i)
            return (i-99);
    }
    return -1;
}
小智 5
它可能会开始像这个不完整和有些低效的例子.但是应该演示语法.
double doSomething(void) {
    double a=1,b=2,c=3;
    __asm {
        mov ecx,10
loop:
        fld a // a
        fmul st(0),st(0) // aa
        fld b // b aa
        fmul st(0),st(0) // bb aa
        fsubp // aa-bb
        fstp c // c = a*a-b*b
        // and so on
        dec ecx
        jnz loop
    }
    return a+b+c;
}
使用SSE指令将是另一种选择.
VC++内联汇编程序在此处记录:http://msdn.microsoft.com/en-us/library/4ks26t93.aspx
英特尔处理器参考手册如下:http://www.intel.com/products/processor/manuals/
| 归档时间: | 
 | 
| 查看次数: | 450 次 | 
| 最近记录: |