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 "錯誤的字元"