[問題] C/C++ 中的 asm 該如何學起?

看板C_and_CPP作者 (藍影)時間14年前 (2010/10/11 04:05), 編輯推噓10(10025)
留言35則, 9人參與, 最新討論串1/2 (看更多)
補充說明: 這個問題是從有人問如何加快浮點數乘法(平方)所有的疑惑.. 看了它 asm 裡面的 code, 我發現那對我而言似乎非常陌生 (其實心裡是想說從哪個星球來的文字) 我只知道與組語有關, 但 google "c language asm" 看得懂的資料似乎不多, 目前覺得有關連的似乎是 "小木偶" 的網站 請教 asm 這部份是否有推薦的參考資料或書籍? 謝謝各位先進的不吝回覆, 感激不盡 !! -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.76.142 ※ 編輯: tropical72 來自: 180.177.76.142 (10/11 12:06) ※ 編輯: tropical72 來自: 180.177.76.142 (10/11 12:10)

10/11 12:14, , 1F
如果你完全沒有組合語言基礎,就得去買本書...
10/11 12:14, 1F

10/11 12:14, , 2F
所謂基礎是,你起碼得知道 eax,ebx,ecx,edx,esp,ebp
10/11 12:14, 2F

10/11 12:14, , 3F
常常破解軟體就會了
10/11 12:14, 3F

10/11 12:17, , 4F
把看雪論壇的文章看一遍就差不多會了
10/11 12:17, 4F

10/11 12:24, , 5F
看怎麼用嘍,像我只是拿來做關鍵加速,就學點基本皮毛 XD
10/11 12:24, 5F

10/11 12:24, , 6F
大陸人老是在那邊羅雲彬、王爽,是多爽
10/11 12:24, 6F

10/11 12:25, , 7F
東抄抄西抄抄湊一湊 XD 如果要更深入當然就要看組語書了
10/11 12:25, 7F

10/11 12:26, , 8F
8051算組合語言嗎 = = 我覺得上述的 reg 讓人很陌生= =
10/11 12:26, 8F

10/11 12:27, , 9F
算啊,51你熟的話,真的看網路資料學x86組語就夠了
10/11 12:27, 9F

10/11 12:27, , 10F
8051和x86的組語比起來簡單許多吧XD
10/11 12:27, 10F

10/11 12:28, , 11F
不過51系列如果玩的夠熟我覺得也很厲害就是了..
10/11 12:28, 11F

10/11 12:28, , 12F
所以c調用的 asm 是 x86 的嗎?
10/11 12:28, 12F

10/11 12:29, , 13F
你還沒學過計算機組織吧? 我們現在用的電腦全部是x86家族
10/11 12:29, 13F

10/11 12:30, , 14F
當然64位元電腦就是x86的進化
10/11 12:30, 14F

10/11 12:30, , 15F
耶..事實上我是自修非本門出身,h大說的是計算機組織與
10/11 12:30, 15F

10/11 12:30, , 16F
結構嗎?
10/11 12:30, 16F

10/11 12:31, , 17F
更正,是purpose說的 計算機組織(最有名是白算盤吧?)
10/11 12:31, 17F

10/11 12:33, , 18F
對,資訊相關科系開的一門課,研究所入學會考,聖經本是
10/11 12:33, 18F

10/11 12:34, , 19F
算盤,現在第三版(白算盤是第二版)。講解CPU的原理
10/11 12:34, 19F

10/11 12:36, , 20F
謝謝各位樓上的提點.小弟感激不盡
10/11 12:36, 20F

10/11 12:40, , 21F
asm寫的好 對硬體要了解
10/11 12:40, 21F

10/11 14:18, , 22F
C調用哪種asm是看cpu
10/11 14:18, 22F

10/11 14:43, , 23F
想瞭解CPU,請先報考中央警察大學
10/11 14:43, 23F

10/11 14:45, , 24F
樓上推文我笑了..所以C調用asm指令,會根據不同cpu給予
10/11 14:45, 24F

10/11 14:46, , 25F
不同之實作方式?(#ifdef 方式實現?)
10/11 14:46, 25F

10/11 19:24, , 26F
不對, ASM(組合語言)是用用助記符號撰寫程式,然後組譯器
10/11 19:24, 26F

10/11 19:25, , 27F
會把它轉成機器碼。機器碼就是硬體在看的東西。所以不同的
10/11 19:25, 27F

10/11 19:25, , 28F
CPU<=>不同的機器碼<=>不同的助記符號, 但都是組合語言
10/11 19:25, 28F

10/11 19:26, , 29F
搜尋C lauguage asm還頗怪的,應該說,這是C內嵌組合語言,
10/11 19:26, 29F

10/11 19:27, , 30F
所以應該要學的是ASM, 至於C內嵌ASM用intel還是AT&T語法則
10/11 19:27, 30F

10/11 19:27, , 31F
比較支微末節,自己用的話,上網查一查就轉過去了。
10/11 19:27, 31F

10/11 21:14, , 32F
非常感謝您的細心說明,這陣子馬上先去砍一本看看.謝謝
10/11 21:14, 32F

10/12 03:57, , 33F
mnemonic 是 assembler 自己定義的, 不見得要跟 CPU
10/12 03:57, 33F

10/12 03:58, , 34F
的 spec 上面用的 mnemonic 一樣. 這是沒有共同規定
10/12 03:58, 34F

10/12 03:58, , 35F
10/12 03:58, 35F
文章代碼(AID): #1CieqMuH (C_and_CPP)
文章代碼(AID): #1CieqMuH (C_and_CPP)