久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

立即注冊 登錄
返回首頁

uid:257705的個(gè)人空間

日志

一種新的單片機(jī)編譯器3:ZJB8

已有 666 次閱讀2017-12-5 15:14

過程簡述

 

       由于單片機(jī)缺少大型的數(shù)據(jù)存儲器,所有ZJB將不使用效率低下的堆棧來傳遞參數(shù),而是在片內(nèi)存儲器的空閑區(qū)域開辟一段內(nèi)存作為過程的參數(shù)和局部變量存儲區(qū),編譯器會分析所有的過程調(diào)用并計(jì)算過程所定義的參數(shù)和局部變量所需的存儲空間,然后重用那些不相干存儲空間,這種策略使得ZJB的資源占用顯著所縮小,以節(jié)省單片機(jī)寶貴的內(nèi)存資源。當(dāng)然,您可以使用引用參數(shù)來引用已聲明的系統(tǒng)變量,諸如ARn等,這將不占參數(shù)區(qū)任何資源并加快參數(shù)的傳遞。如果您想返回大量的參數(shù),可返參數(shù)將提供這種途徑。

 

       ZJB的過程具有重載特性,這樣您可以用同一個(gè)名稱來聲明那些意義相同,但參數(shù)類型不同或參數(shù)個(gè)數(shù)不同的過程,編譯器在調(diào)用時(shí)會用分析所有的同名過程,然后使用最合適的過程來執(zhí)行程序。過程的重載將有利代碼的細(xì)分并提高過程的執(zhí)行效率。

 

       另外,ZJB還具有垃圾過程過濾功能,編譯器在編譯時(shí)會分析所有的過程調(diào)用,并標(biāo)記那些垃圾過程,被標(biāo)記的垃圾過程不分配任何資源,也不生成任何執(zhí)行代碼,所以,您在編程時(shí)可以積累一些常用的過程,并復(fù)制到您工作的程序中,因編譯器的垃圾過濾功能會過濾那些垃圾,所以即是有些多余的過程,也不會影響代碼的效率。

 

過程聲明和調(diào)用

 

過程聲明

       1:聲明過程名稱和所需的參數(shù),不要忘記參數(shù)要用括號括起來,最后再書寫一個(gè)冒號。

              過程名稱(用逗號隔開的參數(shù)列表):

              參數(shù)名加前綴可改變參數(shù)的種類,前綴的意義如下:

              無前綴:  通用參數(shù),只能傳入數(shù)據(jù),不改變實(shí)參的值,相對較安全

              *前綴:    引用參數(shù),傳入傳出數(shù)據(jù),形參不占用任何資源,不安全

              /前綴:      可返參數(shù),傳入傳出數(shù)據(jù),不安全

 

       2:定義過程所需的局部變量,過程中定義的變量為局部變量,當(dāng)過程結(jié)束時(shí)編譯器將釋放這些局部變量和參數(shù)變量,如果您想保持局部變量中的值不變,可使用 :::來聲明,這樣在:::后聲明的變量就成為靜態(tài)變量。假如聲明的局部變量和全局變量重名,那么在過程中將會使用局部變量,這一點(diǎn)需用戶牢記。

 

       3:編寫代碼,以實(shí)現(xiàn)過程的功能。

 

       4在過程結(jié)尾寫一個(gè)返回語句  / ,用于結(jié)束過程。

 

       ;示例:聲明一個(gè)無參xy過程

              xy():                                                     ;聲明語句

                     ::   用逗號隔開的過程級變量列表          ;定義過程使用的局部變量

                     ::: 聲明靜態(tài)變量                               ;靜態(tài)變量在過程結(jié)束時(shí)不釋放內(nèi)存空間

                     過程代碼                                            ;插入過程代碼,以實(shí)現(xiàn)過程的功能

                     /                                                       ;返回語句,結(jié)束過程

 

       ;示例:聲明一個(gè)有參xyz過程

              xyz*Ax"1/y"1):                                ;聲明語句

                     ::   用逗號隔開的過程級變量列表          ;定義過程使用的局部變量

                     過程代碼                                            ;插入過程代碼,以實(shí)現(xiàn)過程的功能

                     /                                                       ;返回語句,結(jié)束過程

 

調(diào)用過程

       過程調(diào)用的格式如下:過程名、參數(shù)列表必須用空格隔開,不能使用逗號,逗號為語句分隔符。

       *過程名稱 用空格隔開的參數(shù)列表,

       注:為了可靠,返回參數(shù)在調(diào)用時(shí)需加  / 前綴,以突出這是一個(gè)返回參數(shù)。

 

       ;示例:調(diào)用有參xy過程

              *xyz  10  1000  /zz                              ;調(diào)用xyz過程

              ;參數(shù)傳遞過程,A=10x=1000y=zz,調(diào)用xyzzz=y

 

堆棧操作

 

       過程在調(diào)用時(shí)會把調(diào)用語句后的地址進(jìn)行壓棧操作,以便返回,壓棧操作先壓入低字節(jié)地址,后壓入高地址字節(jié),如果我們修改堆棧棧頂?shù)膬蓚(gè)字節(jié)數(shù)據(jù),那么過程將返回到我們需要的地方而不是返回到調(diào)用的斷點(diǎn)處,這在一些奇思異想的程序中廣為應(yīng)用,ZJB由于可對堆棧進(jìn)行操作,所有這些看起來不可思議的事情也變得非常輕松,在這之前,我們先熟悉堆棧操作的兩個(gè)語句:

       壓棧語句:       變量++,

       可操作:           k,x, A, Rn, DP, @Ri, @@Ri, @@DP

       功能:把變量內(nèi)容壓入堆棧,堆棧指針SP1,壓棧后對象內(nèi)容不變。相當(dāng)于匯編中的 PUSH

 

       出棧語句:      變量--,

       功能:把棧頂內(nèi)容彈出到變量,堆棧指針SP1,變量中數(shù)據(jù)被替換,相當(dāng)于匯編中的 POP

 

有了這些,我們就實(shí)現(xiàn)這種需求:

              --Sp--Sp                           ;移動棧頂指針以修改斷點(diǎn)地址

              100H++                              100H地址壓入堆棧

              /                                         ;返回到100H地址處執(zhí)行

 


路過

雞蛋

鮮花

握手

雷人

評論 (0 個(gè)評論)

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

返回頂部
主站蜘蛛池模板: 亚洲高清久久 | 在线观看第一页 | 久久av一区二区 | 精品久久久久久18免费网站 | 涩色视频在线观看 | 狠狠操狠狠| 午夜精 | 午夜免费网站 | 久久久久国产精品 | 久久成人精品 | 国产午夜av片 | 国产精品综合久久 | 五月婷婷在线播放 | 日韩av大片免费看 | 日韩精品久久一区二区三区 | 91精品久久久久久久久99蜜臂 | 天天夜天天操 | 久久久久久久久淑女av国产精品 | 天久久| 亚洲区视频 | 午夜av成人| 一区二区三区国产在线观看 | 欧美精品一区二区三区在线播放 | 91资源在线观看 | 成人性视频在线播放 | 日韩视频a | 国产在线精品一区二区三区 | 玖玖视频国产 | 成人免费黄色 | 日本在线中文 | 成人国内精品久久久久一区 | 中文一区二区 | 国产综合一区二区 | 国产精品资源在线 | 欧美日韩在线免费 | 欧美国产91 | 久久三级影院 | 亚洲欧美一区二区三区1000 | 欧美一区二区三区 | 午夜av电影 | 亚洲国产成人精品女人久久久 |