繁体   English   中英

c将数组传递给nasm函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM