【发布时间】:2011-02-08 06:10:47
【问题描述】:
我第一次玩 x86 汇编,但我不知道如何对数组进行排序(通过插入排序)。我了解算法,但汇编让我感到困惑,因为我主要使用 Java 和 C++ .这就是我目前所拥有的一切
int ascending_sort( char arrayOfLetters[], int arraySize )
{
char temp;
__asm{
push eax
push ebx
push ecx
push edx
push esi
push edi
//// ???
pop edi
pop esi
pop edx
pop ecx
pop ebx
pop eax
}
}
基本上没有 :( 有什么想法吗??提前致谢。
好的,这只会让我听起来像个白痴,但我什至无法更改 _asm 中的任何数组值
只是为了测试一下,我放了:
mov temp, 'X'
mov al, temp
mov arrayOfLetters[0], temp
这给了我一个错误 C2415:不正确的操作数类型
所以我尝试了:
mov temp, 'X'
mov al, temp
mov BYTE PTR arrayOfLetters[0], al
这符合,但它没有改变数组...
【问题讨论】:
-
作为开始,您可以反过来尝试。用 C/C++ 实现你的函数并研究编译器为你生成的汇编代码。只是为了得到一个印象......
-
第一步是用C++编写排序算法。然后尝试将循环转换为等效的汇编代码。
-
嗯,会试试的,谢谢!不,不是,我已经迷失了大约 6 个月的业余爱好者:/
-
使用汇编程序编写插入排序当然是可能的。我的 C++ 编译器每天都会这样做。你真正需要什么样的帮助?你想知道如何传递参数或其他东西吗?
-
@paxdiablo,来吧,将模板化的多态类转换为程序集有多难?
标签: c++ assembly x86 insertion-sort