作者godman362 (卯)
看板C_and_CPP
標題[問題] C inline asm
時間Thu Mar 3 10:28:43 2011
目前寫C inline asm遇到一個問題
通常code一般的寫法會大概像這樣:
int a, b = 10;
asm("sall $1, %0"
: "=r"(a)
: "r"(b)
);
大概像是這面這類的寫法
不過目前我遇到的是pointer的問題,我測不出我的問題在哪裡
我的code大概長得像下面這樣:
int a = 10, *b;
b = &a;
而我需要將b丟給C inline asm處理,可是我不清楚該如何放置b參數
asm("sall $1, %0"
: "=r"( ) //僅能填b
: "r"( ) //僅能填b
);
只是這個部份我填上*b或是b,結果出來都是錯誤的
故特來請教各位先進,我是哪邊出了問題?
還請各位不吝指點,謝謝
--
█◣◢█ ◢██◣ ███◣ ◢██◣ ◢██◣ 忘記
希望的男人
和
█◥◤█ █ █ █._●█ █ █ █ █ 忘記
愛的男人
█ █ █▄▄█ █ ╰ █ █▄▄█ █ █ (Road)
█ █ █ █ █ <|█ █ █ █ █ 奇妙的
旅程正要展
開
█ █ █ █ ███◤ █ █ ◥██◤
主演:長谷川泰三 武蔵っぽいひと
-Road of
Gintama-
by gsaw
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.105.91
※ 編輯: godman362 來自: 140.123.105.91 (03/03 10:29)
推 stupid0319:__asm mov eax,b; 03/03 10:55
→ stupid0319:接上面取值__asm eax,dword ptr ds:[eax] 03/03 10:56
→ stupid0319:取得b記憶體位置lea eax,b 03/03 10:57
→ godman362:s大你好,可以請您解釋一下這段寫法嗎? 03/03 10:59
→ godman362:因為我還看不是很懂.... 03/03 10:59
→ godman362:而且,可以直接寫"mov eax, b" 這段嗎? 03/03 11:00
→ godman362:小弟我是在linux底下用gcc去編得,語法上可能不太一樣 03/03 11:00
→ godman362:故不是很懂s大您的寫法... 03/03 11:00
→ stupid0319:我只會寫VC的ASM,以上請無視 03/03 11:19