相关疑难解决方法(0)

什么时候装配比C快?

了解汇编程序的一个原因是,有时可以使用它来编写比使用更高级语言编写代码更高效的代码,特别是C. 但是,我也听过很多次说虽然这并非完全错误,但汇编程序实际上可用于生成更高性能代码的情况极为罕见,需要专业知识和汇编经验.

这个问题甚至没有涉及汇编程序指令将是机器特定的和不可移植的,或汇编程序的任何其他方面的事实.当然,除了这一点之外,还有很多很好的理由知道汇编,但这是一个特定的问题,征求例子和数据,而不是关于汇编语言与高级语言的扩展讨论.

任何人都可以提供一些特定的例子,其中汇编将比使用现代编译器的编写良好的C代码更快,并且您是否可以通过分析证据来支持该声明?我非常有信心这些案例存在,但我真的想知道这些案件究竟有多深奥,因为它似乎是一些争论的焦点.

c performance assembly

458
推荐指数
25
解决办法
10万
查看次数

无法交换值

在下面的代码中,输出在两种情况下保持相同,这要归功于指出我缺少的内容: -

Before Swap:-
a=10     b=512
After Swap:-
a=10     b=512
Run Code Online (Sandbox Code Playgroud)

以下是代码,它编译并运行没有任何问题: -

#include <stdio.h>
int swap(int* x, int* y)
{
    if(x != y)
    {
        _asm
        {
            mov eax,[x]; x into eax
            mov ebx,[y]
            mov [x],ebx;swapping now
            mov [y],eax
        }
    }
    return 0;
}

int main () {
  int a=10,b=512;
  printf("Before Swap:- \na=%d\t b=%d\n",a,b);
  swap(&a,&b); 
  printf("After Swap:- \na=%d\t b=%d",a,b);//Value remains same
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ assembly visual-studio-2010

8
推荐指数
1
解决办法
210
查看次数

循环递减比增量更有效吗?

可能重复:
倒计时比计数更快?

例如,

for (int i = 0; i < max; i++)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

for (int i = max-1; i >= 0; i--)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

这两个循环基本相同,并假设循环不包含任何数组操作.但是,对于第一种情况,每次迭代都需要将max加载到处理器中的寄存器中,然后在i和max之间进行比较..另一方面,后一种情况不需要将0加载到寄存器中,因为0已经是在寄存器中,所以只有后一个循环的比较.如果我错了,请纠正我,如果我是对的,请详细说明.谢谢.

c++ loops processor

3
推荐指数
1
解决办法
855
查看次数

标签 统计

assembly ×2

c ×2

c++ ×2

loops ×1

performance ×1

processor ×1

visual-studio-2010 ×1