所以我需要编写一个带有3个参数的函数,所有参数都是结构体,主文件是用C语言编写的,而ARM函数是用ARM程序集编写的。所以我想问一下如何处理这些结构中的数据?因为所有数据都单独存储在每个寄存器中。
e.g。 -
Struct contains an int and an array
Struct { int a, int b[] }
function(struct a, struct b, struct c)
因此汇编中的数据存储为R0=struct a. int a
,R1=struct a. int b[0]
我尝试在堆栈上推送所有东西,但我得到同样的东西。那么如何操作所有结构中的数组呢?
答案 0 :(得分:1)
在C中写下你想要做的事情,然后编译它并查看反汇编。 GUI编译器将具有保存中间组件的选项。其他命令行编译器应该具有相同的,或者您可以运行objdump -d *.obj
来反汇编目标文件。
每个平台和ABI略有不同,你最好让编译器给你一个例子。