正在学习dsp汇编,想要熟悉一下各个段在内存里的情况,我模仿TI的simple.s汇编程序实验,发现如下问题,请求解答:
我只用到了代码段,这是我的.cmd文件:
这是我一开始的.s文件:
在内存中是这样的:
我分析后猜想:
0xA358(1010 0011 0101 1000)是MVK.L1 0x0308(0000 0011 0000 1000)表示 后面的src,dst 即 2,A6(标记部分表示 0110=A6 0010=2)
0xA358(1010 0011 0101 1000)是MVK.L1 0x0084(0000 0000 1000 0100)表示 后面的src,dst 即 1,A1(标记部分表示 0001=A1 0001=1)
0xA358(1010 0011 0101 1000)是MVK.L1 0x0088(0000 0000 1000 1000)表示 后面的src,dst 即 2,A1(标记部分表示 0001=A1 0010=2)
0xA35A(1010 0011 0101 1010)是MVK.L2 0x0108(0000 0001 0000 1000)表示 后面的src,dst 即 2,B2(标记部分表示 0010=B2 0010=2)
当多于6条指令时,比如9条:
我怀疑前8条指令在内存就会被压缩,而第九条指令没有被压缩:
问题1:
请问开头的-c和-a分别代表什么意思,有什么作用,为什么不加这两行编译会报错。
问题2:
请问我上述的猜想对吗?如果对为什么偶数条指令会被压缩,压缩规则是什么样的?
问题3:
为什么start,和end不需要.def直接可以成为函数?
请求得到解答!