我不是初学程序员,但刚开始使用Tasking VX汇编程序 (手册Wikipedia)。我不敢相信我问这么简单的问题,但在阅读了Tasking VX汇编程序手册两次后,我无法找到最简单的答案: 我可以使用符号名称而不是原始注册名称吗?
类似的东西:
loop_i = d3 ; d3 register, wishing to use symbolic name loop_i instead
; (assembler doesn't allow the above definition)
mov16 loop_i, #4 ; this is what I want in the code
mov16 d3, #4 ; this is what I must use instead
感谢您原谅我提出一个基本问题。
答案 0 :(得分:0)
根据C166用户指南的http://www.tasking.com/support/c166/c166_user_guide_v2.1.pdf TASKING VX-toolset,“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
指令 您可以在所有后续源代码行上使用的替换字符串。 汇编程序搜索所有后续行以查找 符号,并用字符串替换它。如果符号出现在double中 引用字符串它也被替换。单引号之间的字符串是 没有扩大。该指令有助于提供更好的功能 源程序中的文档。符号可以由字母组成, 数字和下划线字符(_),第一个字符不能 是一个数字。
试试这个:
.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 TriXore用户指南的VX工具集”具有类似的汇编程序功能,因此请尝试.define
。只允许的一组寄存器名称与c166不同:
3.5。寄存器 以下寄存器名称(大写或小写)不应用于用户定义的符号 汇编语言源文件中的名称:
D0 .. D15 (data registers) E0 .. E14 (data register pairs, only the even numbers) A0 .. A15 (address registers)