會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





PIC33F 使用C語言混和組語 用法
新會員
註冊日期:
1月16日 13:49:18
所屬群組:
註冊會員
文章: 3
等級: 1; EXP: 10
HP : 0 / 2
MP : 1 / 6
離線
請問版上的大家,如果我欲在原有的C語言下,將一些計算從C改成組語方式(混用),請問是否有相關文章? 因為小弟在將C轉成組語時,complier可以過,但此段程式是沒動作的

不知版上是否有人有相關經驗,感謝!!

EX:
C語言:
Temp = (__builtin_mulss(Error, R1))>>2;

改成ASM:
__asm__ volatile (" clr A");
__asm__ volatile (" mov.w _Error, W4");
__asm__ volatile (" mov.w _R1, W5");
__asm__ volatile (" mac W4*W5,A");
__asm__ volatile (" sftac A,#2");
__asm__ volatile (" mov.w ACCAL,W0");
__asm__ volatile (" mov.w W0,_Temp");

1月16日 14:29:10
轉換PDF檔 列印


Re: PIC33F 使用C語言混和組語 用法
資深會員
註冊日期:
2007/11/05 08:29
所屬群組:
註冊會員
文章: 203
等級: 13; EXP: 28
HP : 0 / 307
MP : 67 / 9015
離線
可以用 Debug 中的 simulator 試看看

1月16日 15:17:10
轉換PDF檔 列印


Re: PIC33F 使用C語言混和組語 用法
新會員
註冊日期:
2016/02/12 22:06
來自 台北市
所屬群組:
註冊會員
文章: 18
等級: 2; EXP: 97
HP : 0 / 49
MP : 6 / 256
離線
compiler user guide都有描敘C語言如何混合組合語言

1月16日 23:22:55
_________________
轉換PDF檔 列印


Re: PIC33F 使用C語言混和組語 用法
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14151
等級: 72; EXP: 51
HP : 1072 / 1787
MP : 4717 / 70841
離線
參考一下 Microchip 所提供的 Library 的原始碼程式部分:

C:\Program Files (x86)\Microchip\MPLAB C30\src\dsp\asm\vadd.s

基本上因 W 暫存器比較多,一般會使用 W0 ~ W3 在函數內使用。

1月17日 10:25:15
轉換PDF檔 列印


Re: PIC33F 使用C語言混和組語 用法
新會員
註冊日期:
1月16日 13:49:18
所屬群組:
註冊會員
文章: 3
等級: 1; EXP: 10
HP : 0 / 2
MP : 1 / 6
離線
先謝謝大家
我會用到W4、W5是因為會使用到mac指令,必須使用W4~W7
另外我好奇的是,在C語言插入組語並使用到暫存器,這些暫存器(例如W4、W5)在原始C裡面也許也會被用到,我是否需要使用push、pop先把它放在推疊裡用完再放回去? 還是這樣混合的用法是可以直接用的,謝謝!

1月17日 18:24:48
轉換PDF檔 列印


Re: PIC33F 使用C語言混和組語 用法
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14151
等級: 72; EXP: 51
HP : 1072 / 1787
MP : 4717 / 70841
離線
當然,你有用到的 W reg. 一定要先推到堆疊裡,處理完後再依續取回。總之除了可以改變 Variable 外,W 暫存器是要回復原值的, 以避免不必要的錯誤。

1月17日 19:37:11
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project