T32脚本用法

时间:2017-01-16 07:27:36

标签: trace32 lauterbach

我是T32脚本的新手,并对脚本提出了疑问。 看看我们项目的脚本,我找到了如下代码:

A.cmm
=======================================================
....
   if (&AAA==TRUE())
   (
      do B.cmm F=test1
      entry &detect
   )
.....
=======================================================

B.cmm
=======================================================
.......
test1:
........
return TRUE()
=======================================================

得到的问题很少: 1.是用于接收test1子程序的返回值的入口函数,并将其放入"检测"宏? 2." F ="?的任何含义我们只能在do命令后面使用test1吗? 谢谢!

1 个答案:

答案 0 :(得分:3)

DO <filename> [<parameter_list>]

这意味着 F = test1 是一个应该在 B.cmm 中评估的参数。 B.cmm 似乎使用 F = function 来决定调用 B.cmm 中的哪个函数。在 B.cmm

中可能有一些与此类似的代码
LOCAL &ARGS &ARG_FUNCTION 
ENTRY %LINE &ARGS
&ARG_FUNCTION=STRing.SCANAndExtract("&ARGS","F=","")

IF "&ARG_FUNCTION"!=""
(
    PRIVATE &rval
    GOSUB &ARG_FUNCTION
    ENTRY &rval
    ENDDO &rval
)
ENDDO

ENTRY 用于获取参数以及获取返回值。 entry&amp; detect B.cmm 的调用中获取返回值,并将其保存到&amp; detect

在较新版本的TRACE32中,您还可以使用 PARAMETERS RETURNVALUES 代替 ENTRY 。但是对于 PARAMETERS / RETURNVALUES ,所有参数必须以双引号传递(例如DO B.cmm "F=test1")。上面的例子如下所示:

LOCAL &ARGS &ARG_FUNCTION
PARAMETERS &ARGS
&ARG_FUNCTION=STRing.SCANAndExtract("&ARGS","F=","")

IF "&function"!=""
(
    PRIVATE &rval
    GOSUB &function "&args"
    RETURNVALUES &rval
    ENDDO "&rval"
)
ENDDO