gpt4 book ai didi

c - 将用户输入从 C 传递给汇编器

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:56 25 4
gpt4 key购买 nike

我是 ARM 汇编程序的新手。使用 qemu 模拟器。

solution对我不起作用。

我有这个 C 文件md1_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;
}

.h 文件包含函数原型(prototype) unsigned int asum(unsigned int n);

我真的很困惑,如何将n传递给汇编代码。

汇编代码是md1.s:

.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

只是无法得到它。

最佳答案

OP提到架构是ARM 64,所以我按照调用约定来回答。

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

这就是编译器在编译 C 文件时也会为您做的事情。所以你可以在 r0 寄存器中期待你的参数 n 并且你可以直接使用它。

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

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

关于c - 将用户输入从 C 传递给汇编器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42876368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com