[英]c pass array to nasm function
我试图将数组传递给用汇编语言编写的排序程序。 我到目前为止的代码是:
main.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:
.text全局myFunc节外部printf
myFunc:
enter 4,0
push ebx
push dword [ebp + 8]
call printf
pop ebx
leave
ret
这只是一些测试代码,以了解如何执行此操作。
我的理解是,这应该将指向数组的指针打印出来,但是我可能错了。
谁能给我一个将数组传递到汇编文件(NASM)的简单示例。
谢谢!
您正在调用printf
,第一个参数是传递给myFunc
的指针。 那是行不通的-第一个参数必须是格式字符串。
不过,其余的代码看起来还不错。 注意,您也必须将数组的长度传递给您的asm函数。
回答此类问题的最佳方法是编写一个简短的函数,以执行您对C感兴趣的操作类型,并将其编译为汇编程序以进行逆向工程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.