我正试图将数组传递给在程序集中编写的排序程序。我目前掌握的代码是:
主要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/

10-14 09:17