写 hexagon dsp 汇编代码时遇到的问题

1、编译报错:

Fatal: attempt to generate unsupported relocation type `R_HEX_32_6_X' for symbol `R5', recompile with -fPIC

这个说明 R5 这个寄存器用的有问题,才发现写的时候 memw 把寄存器当立即数用了


2、多次遇到加了编译器优化选项之后就报错的问题,不加就能正常执行,记得之前有一次是在汇编代码里面换了一个使用的寄存器就解决了,这次是不是也是这个问题?

事实证明确实是类似的问题,但是看不到程序内部的情况,所以我猜测是加了编译器优化选项之后发生了寄存器踩踏的行为,因为我在汇编代码里面加了寄存器压栈出栈的操作之后问题就解决了。


3、使用memw指令时遇到一个问题,就是要访问的地址没有按照 word 对齐的时候会出错,程序会crush。所以使用这类指令的时候要注意字节对齐。没办法只能改用 memub了。


4、汇编里面如果入参是个地址,而汇编代码中需要改变改地址的值,不能直接在该入参的寄存器上进行操作,最好是将该地址的值先赋值给其它寄存器,再进行对应的操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容