電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> EDA開發應用 >> Keilc >> 正文

小結一下KeilC與IAR對函數參數及返回值的處理

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2011/3/3

在C51中,KeilC與IAR在函數參數的傳遞及返回值的處理上,有著較大的不同。本文主要小結不同,并稍稍發表Hanny個人對這些方式的優缺點的看法。

首先,我們對數據類型進行分類。根據數據類型的長度,我們可以將數據簡單分為:bit, u8, u16, u32。其中,bit表示位變量;u8主要為char、signed char、unsigned char型變量;u16主要為short、usigned short、int、unsigned int、point型變量;u32主要為long、unsigned long、float型變量。

然后,先介紹一下函數參數的傳入。
首先是bit,KeilC采用的是位尋址區的變量來進行bit型參數的傳入。而IAR采用的是B寄存器來傳入。
接著是u8,KeilC主要采用R7、R5、R3來進行參數的傳入。也就是說:當函數的參數為一個時使用R7,兩個時使用R7和R5,三個時就使用R7、R5及R3。同樣的,IAR主要采用R1、R2、R3、R4、R5來進行u8型參數的傳遞。
緊接著是u16,KeilC主要采用R6:R7、R4:R5、R2:R3來進行傳入,而IAR采用R3:R2、R5:R4來進行傳入。
再接著就是u32,KeilC主要采用R4:R7來進行傳入,IAR采用R5:R2來進行傳入。
最后,KeilC還支持一種叫做通用數據指針的數據類型。主要采用R2:R1、R3來傳入。其中,R2:R1存儲指針地址,R3存儲內存類型。

然后再說說返回值。
返回值為bit時,KeilC與IAR都用C來傳出。
返回值為u8時,Keil采用R7,而IAR采用R1。
返回值為u16時,Keil采用R6:R7,而IAR采用R3:R2。
返回值為u32時,Keil采用R4:R7,而IAR采用R5:R2。

下面是Hanny的個人小結:
KeilC的函數傳入傳出都是秉承KeilC的大端思想,主要用到的寄存器為R7-R2;IAR的函數傳入傳出是秉承小端思想,主要用到的寄存器為R1-R5。
KeilC函數參數傳遞的優點是:在從u8向u16、u32擴展時,由于低位所處的寄存器位置不變,擴展時對代碼的修改較小。
IAR的優點是:在傳入的參數位數為u8時,更緊湊的方式能夠傳入更多的參數。

相比之下,Hanny更喜歡KeilC這種方式。

Tags:keilc,keil,IAR對函數參數,返回值  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
性生活免费大片| 纯爱无遮挡h肉动漫在线播放| 欧美性大战久久久久久| 在线看的你懂的| 免费观看成人羞羞视频软件| 中文字幕aⅴ人妻一区二区| 精品人人妻人人澡人人爽人人| 愉拍自拍视频在线播放| 午夜无码人妻av大片色欲| 东北女大战28公分黑人| 爱豆在线观看网址91|免费| 成人a毛片在线看免费全部播放| 午夜视频久久久久一区| 中文字幕亚洲欧美在线不卡| 狠狠色综合TV久久久久久| 性一交一乱一伧老太| 国产中文字幕免费观看| 亚洲AV成人无码天堂| 香蕉eeww99国产在线观看| 日本免费v片一二三区| 国产三级a三级三级| 欧美成人精品第一区二区三区| 国产香蕉视频在线| 欧洲成人爽视频在线观看| 国产欧美视频高清va在线观看| 亚洲AV永久无码天堂网| 萌白酱在线17分钟喷水视频| 成人在线欧美亚洲| 波多野结衣第一页| 国产精品综合一区二区三区| 欧美日韩电影在线观看| 国产特级毛片aaaaaa高潮流水| 久久国产精品网| 真实的国产乱xxxx在线| 国内精品久久久久影视| 免费又黄又硬又爽大片| 97久人人做人人妻人人玩精品 | 一个人免费观看视频在线中文| 欧美激情视频一区二区三区 | 小莹与翁回乡下欢爱姿势| 亚洲白色白色在线播放|