看板 C_and_CPP 關於我們 聯絡資訊
目前寫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
akasan:http://tinyurl.com/3nmsq gcc 的 operand 是用 % 吧? 03/03 11:24