找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
感激所有對伊莉作出奉獻的人尊貴會員無限觀看附件圖片認識好友、聊天,分享生活趣事
officecosplay上原亞衣新竹中出中文流出
papapub刀劍神域死神商館茵蒂狙われたcrown of黒巣ガタ

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]轉生貴族憑鑑定技

晴天 體驗台灣特色檳

[繁]從Lv2開始開外掛

[繁]月光下的異世界之

(4月新番)[繁]終末的

文化大革命 紀實錄像
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 1053|回復: 3
打印上一主題下一主題

GCC的asm範例程式碼[複製鏈接]

  尊貴會員

大綿羊 超級大耗呆

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
802
積分
2980 點
潛水值
27720 米
跳轉到指定樓層
樓主
發表於 2009-11-26 07:44 PM|只看該作者|倒序瀏覽
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
本帖最後由 Force[TW] 於 2009-11-26 08:16 PM 編輯

微軟 Visual Studio 的編譯器所使用的 asm 語法是(Intel 的方法):
參考資料(MSDN):
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
  1. // IDE: Visual C++
  2. #include <iostream>
  3. #include <cstdlib>
  4. using namespace std;
  5. void main(void)
  6. {
  7. int a = 15, b = 0, adder = 240;
  8. cout<<"a = "<<a<<endl;
  9. cout<<"b = "<<b<<endl;
  10. __asm
  11. {
  12.   // eax = a
  13.   mov eax, a;
  14.   // eax += adder
  15.   add eax, adder;
  16.   // b = eax
  17.   mov b, eax;
  18. }
  19. cout<<"a = "<<a<<endl;
  20. cout<<"b = "<<b<<endl;
  21. system("PAUSE");
  22. }
複製代碼
但是 GCC 編譯工具(AT&T 的方法;Unix)所使用的 asm 語法是不同於微軟的編譯環境:
參考資料(CodeProject.com):
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

所以 Dev-C++ 僅適用於 AT&T 的方法!
  1. // asm 語法
  2. // asm ("敘述式");
  3. asm ("statements");
  4. __asm__("statements");
  5. //
  6. // asm 延伸語法
  7. // asm ( "敘述式" : 輸出 : 輸入 : clobbered);
  8. /* clobbered - comma separated list of registers clobbered.
  9. If you write to memory then "memory" has to inluded as one of the clobbered values. This is to tell gcc that we might have changed some value in the memory which gcc thought it had in a register, It is equivalent to clobbering all of the registers. */
  10. // 疑問:clobbered 強制寫入?!
  11. asm ( "statements" : output : input : clobbered);
  12. //
  13. // 以下是參數:
  14. The constraints for input/output are :-
  15. g - let the compiler decide which register to use for the variable
  16. q - load into any available register from eax, ebx, ecx, edx
  17. r - same as q but includes esi and edi
  18. a - load into the eax register
  19. b - load into the ebx register
  20. c - load into the ecx register
  21. d - load into the edx register
  22. f - load into the floating point register
  23. D - load into the edi register
  24. S - load into the esi register
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
分享分享0收藏收藏0支持支持0

使用道具檢舉

Rank: 2Rank: 2

帖子
208
積分
358 點
潛水值
24562 米
頭香
發表於 2009-11-26 08:12 PM|只看該作者
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。
謝謝大大分享3QQQQQQQQQQQQQQQQQ
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。

使用道具檢舉

maxkuma 該用戶已被刪除
3
發表於 2009-11-27 09:15 AM|只看該作者
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。
from WIKI
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

In software engineering, clobbering a file or computer memory is overwriting its contents. 就是蓋掉原本的內容

另外這篇文章有解釋到clobber欄位
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

  尊貴會員

大綿羊 超級大耗呆

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
802
積分
2980 點
潛水值
27720 米
4
發表於 2009-11-27 07:56 PM|只看該作者
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
from WIKI
告知gcc在asm instruction中有哪些register被我們修改了
maxkuma 發表於 2009-11-27 09:15 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員


哈哈!果然我的猜測是正確的。...
瀏覽完整內容,請先 註冊登入會員
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部