Cortex M3-Vector表使用gnu-as
看起来像这样.long STACK_START
.long _reset
.long 0x0 //Reserved
.long _hard_fault
...
问题是符号地址必须设置底部位,因为它们指向拇指代码。 Gnu-as将_reset
转换为链接器的重定位以适应,并且链接器不添加底部位,同样我也不能执行类似(_reset | 1)
的操作。
我可以将_reset设置为固定位置并对该矢量进行“硬编码”,但我正在努力避免这种情况。
也许有办法阻止gnu-as将_reset
转换为重定位,所以我可以将它用作常量值。
允许_reset:
标签与向量表位于同一个编译单元中。
举例说明:
.long STACK_START
.long _reset
...
_reset:
b _reset
汇总为:
00000000 <vectors>:
0: 20001000 andcs r1, r0, r0
4: 000000c0 andeq r0, r0, r0, asr #1
...
000000c0 <_reset>:
c0: e7fe b.n c0 <_reset>
c2: bf00 nop
我希望将000000c0
汇总为000000c1