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

时间:2017-02-19 16:57:09

标签: assembly infineon

我不是初学程序员,但刚开始使用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

感谢您原谅我提出一个基本问题。

1 个答案:

答案 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)