从C调用MIPS:对齐未对齐的参数

问题描述 投票:1回答:1

我正在从C调用一些MIPS中的代码的函数。有时,我通过$ a0到$ a3传递的参数未对齐,如果尝试使用lw加载它们,则会抛出错误。

无论如何,我是否可以加载这些未对齐的参数并将其转换为对齐的(不是使用lb

然后将它们粘合在一起)?我不需要回写它们,只需阅读它们即可。

[我也尝试在MIPS代码中使用“ align”,但是它不起作用,可能不是为了这个目的。

编辑:我正在使用GCC 7.4.0

编辑:我正在使用包含未对齐数据的打包结构。

我正在从C调用一些MIPS中的代码的函数。有时,我通过$ a0到$ a3传递的参数未对齐,如果尝试使用lw加载它们,则会抛出错误。反正我可以...

c mips mips32
1个回答
0
投票

当您在C代码中使用打包结构时,编译器会知道哪些字段未对齐,并创建必要的代码以访问未对齐的数据。可能会完全按照您在问题中的描述进行操作,即使用lb而不是lw并合并字节。

© www.soinside.com 2019 - 2024. All rights reserved.