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

你可能感兴趣的:(写 hexagon dsp 汇编代码时遇到的问题)