ZHCU947E June 2015 – January 2023
通常情况下,引用符号时会引用其运行时地址。但在运行时可能需要引用加载时地址。具体来说,将段从其加载地址复制到其运行地址的代码必须能够访问加载地址。.label 指令可定义一个引用段的加载地址的特殊符号。因此,如果正常符号相对于运行地址进行重定位,.label 符号也会相对于加载地址进行重定位。请参阅创建加载时地址标签,了解有关 .label 指令的更多信息。
#STDZ0755089和#STDZ0754221展示了 .label 指令的用法:将段从 SLOW_MEM 中的加载地址复制到 FAST_MEM 中的运行地址。#STDZ0751611演示了#STDZ0755089的运行时执行。
如果使用表操作符,则不需要 .label 指令。请参阅GUID-56234D4A-6073-4C65-BD86-2DE70F0538CE.html#GUID-56234D4A-6073-4C65-BD86-2DE70F0538CE。
.sect ".fir"
.align 4
.label fir_src
fir
; insert code here
.label fir_end
.text
MVKL fir_src, A4
MVKH fir_src, A4
MVKL fir_end, A5
MVKH fir_end, A5
MVKL fir, A6
MVKH fir, A6
SUB A5, A4, A1
loop:
[!A1] B done
LDW *A4+ +, B3
NOP 4
; branch occurs
STW B3, *A6+ +
SUB A1, 4, A1
B loop
NOP 5
; branch occurs
done:
B fir
NOP 5
; call occurs
/* FIR 示例的部分链接器命令文件 */
MEMORY
{
FAST_MEM : origin = 0x00001000, length = 0x00001000
SLOW_MEM : origin = 0x10000000, length = 0x00001000
}
SECTIONS
{
.text: load = FAST_MEM
.fir: load = SLOW_MEM, run FAST_MEM
}
有关在 C/C++ 代码中引用链接器符号的信息,请参阅GUID-1F98654C-B2F7-475F-A477-551D8A8F35FC.html#GUID-1F98654C-B2F7-475F-A477-551D8A8F35FC。