1. 程式人生 > >Trace32使用之基本語句和關鍵字

Trace32使用之基本語句和關鍵字

 

首先介紹一下Trace32指令碼概貌:

Trace32提供了強大的指令碼控制功能,可以做到所有的GUI的工作,還包括GUI無法完成的工作。
正因為其指令碼提供的功能過於強大,導致很多功能在Trace32軟體上你找不到,這部分得用指令碼來驅動使用。更多的trace32使用請參考http://www.jtag1000.com/
Trace32使用的指令碼類似於pascal語法,但又有些C語言的感覺,採用副檔名為.cmm的檔案,其實就是文字檔案,
也可以用記事本開啟進行編輯。
好了,下面進入正題,Trace32的指令碼基本語法:

一、先來個輸出Hello World!例項

1、新建一個文字檔案,改副檔名為.cmm檔案如:test.cmm
2、開啟Trace32軟體,選擇第二個,Edit file,並開啟test.cmm檔案
3、在檔案中輸入print "Hello World!",點選上面的Save儲存按鈕,或點選Save&Run也行,即運行了第一個Trace32程式。
4、輸出的內容在左下角,可以看到Hello World!字樣。

二、指令碼變數申明


1、本地變數申明:
 LOCAL &a &b &c//關健字為LOCAL,變數以“&”開頭
 ENTRY &a &b
 &c=&a*&b
 RETURN &c
2、全域性變數申明:
 GLOBAL &State &Level//關健字為GLOBAL,變數以“&”開頭


三、Trace32使用的基本控制語句


1、條件控制最基本的IF-ELSE(注意Trace32關健字不區分大小寫,也可以是if else)
 如下:
 IF "a"=="a"
 (
  PRINT "true"
 )
 ELSE IF "a"=="b"
 (
  PRINT "false"
 )
 ELSE
 (
  PRINT "這裡不會執行(test)"
 )
 解釋一下,Trace32裡面沒有then關健字,多行語句請使用括號"()"括起來。
2、迴圈語句while和RePeaT
 &true=0!=1
 &count=1
 WHILE &true
 (
  DO mem_test
  PRINT "MEMTEST " &count
  &count=&count+1
 )
 ENDDO
 
 -------------
 RePeaT [<count>]
  <block>
 [WHILE [<condition>]]
 or
 RePeaT <count> <command>
3、GOTO跳轉語句
 GOTO endloop//關健字為GOTO,endloop為標號,如:
  endloop:
   print "這裡為GOTO執行地"
 GOTO 102.//102.為行號


1、執行其它指令碼檔案
 DO <filename> [<parlist>]
 比如有二個檔案:
 a.cmm
 b.cmm
 a.cmm內容為:do b
 b.cmm內容為: print "a call b"

 執行a.cmm檔案

2、呼叫子函式
 GOSUB subr1 0x100 10. "abc"//呼叫子函式,關健字GOSUB, subr1為子函式標號,後面為呼叫的引數0x100 10. "abc"
 subr1://這裡是子函式,以變數名加冒號,標號形式。
  ENTRY &address &len &string
  Data.Set &address++(&len-1) &string
  RETURN
3、ENTER和ENTRY語句
 enter &x
 print "x=&x"


 ENTRY &address
 GOSUB func1 &address 1.
 ENTRY &result
 PRINT “Result=” &result
 ENDDO

 func1:
  LOCAL &addr &size
  ENTRY &addr &size
  Data.Set &addr++&size 0x0
  &retval=Data.Byte(&addr)
  RETURN &retval
4、INKEY字元輸入
 INKEY
 INKEY &key
 IF &key==0x0d
  print "正確的輸入"
 else
  print "錯誤的字元"