0

我正在尝试将一个数组传递给我用汇编编写的排序程序。我到目前为止的代码是:

主.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:

section .text 全局 myFunc extern printf

    myFunc:
            enter   4,0
            push    ebx

            push    dword [ebp + 8]
            call    printf

            pop     ebx
            leave
            ret

这只是一些测试代码来学习如何做到这一点。

我的理解是这应该打印指向数组的指针,但我可能错了。

谁能给我一个将数组传递给程序集文件(NASM)的简单示例。

谢谢!

4

2 回答 2

2

您调用printf的第一个参数是传递给myFunc. 那是行不通的——第一个参数必须是格式字符串。

不过,您的其余代码看起来还不错。请注意,您还必须将数组的长度传递给您的 asm 函数。

于 2013-03-10T04:24:59.537 回答
2

回答此类问题的最佳方法是编写一个简短的函数来执行您在 C 中感兴趣的操作类型,然后将其编译为汇编以进行逆向工程。

于 2013-03-10T15:26:04.317 回答