使用符号名称而不是寄存器名称来任务VX汇编程序



我不是初学者,而是开始使用任务VX汇编程序(手册http://www.tasking.com/support/tricore/tc_user_guide_v6.0.pdf)。我不敢相信我在问一个简单的问题,但是在阅读了两次任务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

感谢您原谅我的基本问题。

根据http://www.tasking.com/support/c166/c166/c166/c166_user_guide_guide_v2.1.pdf C166用户指南的任务VX-toolset 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指令您定义 您可以在所有以下源线上使用的替换字符串。 汇编器搜索所有后续行以出现 符号,并用字符串替换。如果符号以双重发生 引用的字符串也被替换。单引号之间的字符串是 没有扩展。该指令对于提供更好的 源程序中的文档。一个符号可以由字母组成, 数字和下划线字符(_),第一个字符不能 成为数字。

尝试以下操作:

 .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" Tricore用户指南的任务VX-Toolset"具有类似的汇编功能,请尝试.define。仅允许的寄存器名称与C166不同:

3.5。寄存器 以下寄存器名称(大写或小写)不应用于用户定义的符号 汇编语言源文件中的名称:

D0 .. D15 (data registers)
E0 .. E14 (data register pairs, only the even numbers)
A0 .. A15 (address registers)

最新更新