Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将用户输入从C传递到汇编程序_C_Linux_Assembly_Arm - Fatal编程技术网

将用户输入从C传递到汇编程序

将用户输入从C传递到汇编程序,c,linux,assembly,arm,C,Linux,Assembly,Arm,我不熟悉ARM汇编程序。使用qemu模拟器 这对我不起作用 我有这个C文件md1\u main.C: #include <stdio.h> #include <stdlib.h> #include "md1.h" int main (void) { int n; scanf("%d", &n); printf("Result = %u\n", asum(n));

我不熟悉ARM汇编程序。使用qemu模拟器

这对我不起作用

我有这个C文件md1\u main.C

#include <stdio.h>
#include <stdlib.h>
#include "md1.h"

    int main (void)
    {
            int n;
            scanf("%d", &n);
            printf("Result = %u\n", asum(n));
            return 0;
    }

只是无法理解。

OP提到了ARM64的体系结构。所以我会按照通话约定接听

前4个参数在r0、r1、r2、r3中传递

这也是编译器在编译C文件时为您所做的。因此,您可以在r0寄存器中使用参数
n
,您可以直接使用它

我还看到您的函数返回一个无符号值。这将在r0寄存器中返回


有关调用约定的更详细描述,请参见。

OP提到了ARM64架构。所以我会按照通话约定接听

前4个参数在r0、r1、r2、r3中传递

这也是编译器在编译C文件时为您所做的。因此,您可以在r0寄存器中使用参数
n
,您可以直接使用它

我还看到您的函数返回一个无符号值。这将在r0寄存器中返回


有关调用约定的更详细说明,请参见。

编译此C代码的目标是什么?平台-Linux、Windows或其他什么?@AjayBrahmakshatriya,Linux@Benny,那个解决方案(?)对我不起作用。好的,所以我们必须遵循Linux调用约定。现在目标是什么?那是什么集会?X86?X64?手臂?你确定吗?因为这些寄存器看起来不像x86_64寄存器。说明也不一样。编译此C代码的目标是什么?平台-Linux、Windows或其他什么?@AjayBrahmakshatriya,Linux@Benny,那个解决方案(?)对我不起作用。好的,所以我们必须遵循Linux调用约定。现在目标是什么?那是什么集会?X86?X64?手臂?你确定吗?因为这些寄存器看起来不像x86_64寄存器。说明书上也没有。
.text
.align  2
.global asum
.type   asum, %function

asum:
    mov r1, #0
    mov r2, #1

loop:
    cmp r2, #3 ; instead of 3 there should be my input
    bgt end
    add r1, r1, r2
    add r2, r2, #1
    b loop

end:
    mov r0, r1
    bx lr