我正在从C调用一些MIPS中的代码的函数。有时,我通过$ a0到$ a3传递的参数未对齐,如果尝试使用lw加载它们,则会抛出错误。
无论如何,我是否可以加载这些未对齐的参数并将其转换为对齐的(不是使用lb
然后将它们粘合在一起)?我不需要回写它们,只需阅读它们即可。[我也尝试在MIPS代码中使用“ align”,但是它不起作用,可能不是为了这个目的。
编辑:我正在使用GCC 7.4.0
编辑:我正在使用包含未对齐数据的打包结构。
我正在从C调用一些MIPS中的代码的函数。有时,我通过$ a0到$ a3传递的参数未对齐,如果尝试使用lw加载它们,则会抛出错误。反正我可以...
当您在C代码中使用打包结构时,编译器会知道哪些字段未对齐,并创建必要的代码以访问未对齐的数据。可能会完全按照您在问题中的描述进行操作,即使用lb
而不是lw
并合并字节。