gpt4 book ai didi

c - ARM 汇编器返回指针

转载 作者:行者123 更新时间:2023-11-30 14:51:43 25 4
gpt4 key购买 nike

我目前正在开发一个项目,需要从 ARM 汇编函数向 C 程序返回一个指向 double 的指针。

我目前通过将 double 插入堆栈然后返回堆栈指针的地址来解决这个问题。

但是我不确定这是否是最好(最安全)的方法,因此我在这里要求确认这是一种好方法还是替代解决方案。

另一个问题是,根据任务,我不允许传递另一个变量,也不允许我使用 C malloc 函数。

编辑:我通过在 .data 中创建一个变量解决了这个问题,然后只需返回该字段的地址即可。

最佳答案

你应该想想你将如何使用纯 C 语言!您不能在堆栈上分配double。您可以在调用汇编函数之前保留内存。示例

void my_assembly(double* value) {
*value = (...);
}

void main(void) {
double value;

my_assembly(&value);
}

或者将其分配到汇编函数中:

double* my_assembly(void) {
double *value = malloc(sizeof(double));
*value = (...);
return value;
}

void main() {
double* value = my_assembly();
}

另一种选择是返回双倍! ARM's Procedure call Standard 5.4 结果返回说:

A double-word sized Fundamental Data Type (e.g., long long, double and 64-bit containerized vectors) is returned in r0 and r1

关于c - ARM 汇编器返回指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48069689/

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