我正试图将数组传递给在程序集中编写的排序程序。我目前掌握的代码是:
主要c:
#include <stdio.h>
extern void myFunc(int * somedata);
int arr[5] = { 3, 2, 33, 11, 1};
void main(){
int i;
myFunc(arr);
for(i = 0; i < 5; i++)
{
// printf( "%d\n", arr[i] );
}
}
myFunc.asm:我的记忆:
节.文本
全局myFunc
外部打印
myFunc:
enter 4,0
push ebx
push dword [ebp + 8]
call printf
pop ebx
leave
ret
这只是一些测试代码来学习如何做到这一点。
我的理解是这应该打印指向数组的指针,但我可能错了。
有谁能给我一个简单的例子,把数组传递给程序集文件(NASM)。
谢谢您!
最佳答案
调用printf
时,第一个参数是传递给myFunc
的指针。那不行-第一个参数必须是格式字符串。
不过,代码的其余部分看起来没问题。注意,还必须将数组的长度传递给asm函数。
关于c - c将数组传递给nasm函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15318873/