根据http://www.tasking.com/support/c166/c166_user_guide_v2.1.pdf TASKING VX-toolset for C166 User Guide,“3.3. 汇编指令的操作数”部分,寄存器操作数应采用“ 3.5. 寄存器”部分:
以下寄存器名称(无论大写还是小写)都不应用于汇编语言源文件中的用户定义符号名称:
R0 .. R15 (general purpose registers)
RL0 .. RL7 (byte registers)
RH0 .. RH7 (byte registers)
据我了解,用户定义的符号用于常量或标签;“3.7.4. 符号类型和表达式类型”中没有用户定义类型为“寄存器”的符号。但是您可以尝试使用带有“ .DEFINE
”的预处理器:
.DEFINE symbol string
描述。使用该.DEFINE
指令,您可以定义一个替换字符串,您可以在所有以下源代码行中使用它。汇编器在所有后续行中搜索符号的出现,并将其替换为字符串。如果符号出现在双引号字符串中,它也会被替换。单引号之间的字符串不展开。该指令有助于在源程序中提供更好的文档。符号可以由字母、数字和下划线字符 (_) 组成,并且第一个字符不能是数字。
尝试这个:
.define loop_i d3
mov16 loop_i, #4
mov16 d3, #4 ; this is what I must use instead
PS:http : //www.tasking.com/support/tricore/tc_user_guide_v6.0.pdf《TASKING VX-toolset for TriCore User Guide》有类似的汇编能力,所以试试.define
。只有允许的寄存器名称集不同于 c166:
3.5. 寄存器 以下寄存器名称(无论大写还是小写)都不应用于汇编语言源文件中的用户定义符号名称:
D0 .. D15 (data registers)
E0 .. E14 (data register pairs, only the even numbers)
A0 .. A15 (address registers)