大家好,今天小編關(guān)注到一個(gè)比較有意思的話題,就是關(guān)于disassembly機(jī)械原理的問題,于是小編就整理了1個(gè)相關(guān)介紹disassembly機(jī)械原理的解答,讓我們一起看看吧。
要想精通C語(yǔ)言,必須先學(xué)習(xí)匯編嗎?
編程語(yǔ)言里面很少有人直接說(shuō)出精通兩個(gè)字,特別是一些入行好多年的程序員,從語(yǔ)法來(lái)講C語(yǔ)言相對(duì)來(lái)講入門還是比較容易,在高級(jí)語(yǔ)言還沒有完全展開的年代,C語(yǔ)言算入門比較簡(jiǎn)單的編程語(yǔ)言了,起碼要比語(yǔ)法細(xì)節(jié)繁雜的C++好太多了,現(xiàn)在很多做應(yīng)用開發(fā)的程序員覺得能寫C語(yǔ)言的都是高手,這完全是一種這山看著那山高的心態(tài)了,做C語(yǔ)言還覺得高級(jí)語(yǔ)言編程模式復(fù)雜,現(xiàn)在越來(lái)越多的編程入門人員已經(jīng)不選擇C語(yǔ)言作為入門語(yǔ)言覺得太難了,對(duì)于面向過程語(yǔ)言開發(fā)的C語(yǔ)言為什么讓很多人覺得很難?
1.C語(yǔ)言硬件搭界由于很多人對(duì)硬件不熟悉,讓很多人覺得諱莫如深
2.C語(yǔ)言由于指針的存在很多人覺得難以理解,覺得很難。
但是大部分老程序員覺得C語(yǔ)言是一門相對(duì)入手比較容易的編程語(yǔ)言,但現(xiàn)在編程向著集成化的方向發(fā)展,相比較而言C語(yǔ)言顯得難了許多。
越是工作年限長(zhǎng)的老程序員越是不輕易說(shuō)出精通兩個(gè)字,C語(yǔ)言直接底層屬于匯編,匯編不僅僅是C語(yǔ)言的基礎(chǔ),也是計(jì)算機(jī)運(yùn)行的基石,如果真是一位精通C語(yǔ)言的高手,那么對(duì)于匯編不說(shuō)很熟悉,起碼會(huì)懂常見的語(yǔ)法,因?yàn)镃語(yǔ)言調(diào)試過程中遇到的一些奇怪的現(xiàn)象,拿不準(zhǔn)的情況深入到匯編層面就很容易解決問題。所以想更好的學(xué)好C語(yǔ)言,對(duì)于匯編語(yǔ)言還是需要多少了解一點(diǎn)。
但如果一定說(shuō)只有學(xué)好匯編才能學(xué)好C語(yǔ)言,這種因果關(guān)系是不存在的,本來(lái)就是就屬于兩種不同的編程語(yǔ)言,在有些地方存在一些交集而已,比如對(duì)性能要求非常大的地方,直接在C語(yǔ)言里面調(diào)用匯編來(lái)實(shí)現(xiàn),這種在很多地方都使用過。
從市場(chǎng)上對(duì)于C語(yǔ)言的需求量依然很大,但對(duì)于比例相比別的語(yǔ)言少了許多,不是說(shuō)C語(yǔ)言不重要了,主要是現(xiàn)在應(yīng)用方便編程的需求更大,在很多領(lǐng)域C語(yǔ)言還是首選,通訊領(lǐng)域,操作系統(tǒng),嵌入式開發(fā)等等還會(huì)選擇C語(yǔ)言,而且現(xiàn)在很多主流的編程語(yǔ)言的底層就是C語(yǔ)言來(lái)完成的,如果喊著C語(yǔ)言已經(jīng)過時(shí)了或者不行的話,如果是這樣代表真的不懂編程。
希望能幫到你。
不一定要懂匯編,至少不需要先學(xué)習(xí)匯編。
匯編對(duì)分析底層驅(qū)動(dòng)有一定幫助,尤其是嵌入式開發(fā)。
匯編并不難,每個(gè)芯片平臺(tái)定義的匯編指令千差萬(wàn)別。 因項(xiàng)目需要,臨時(shí)去翻指令理解也來(lái)得及,沒有必要去強(qiáng)記。
要學(xué)的東西太多,在匯編上花費(fèi)太多精力沒有必要。
不是必須的,但有幫助。程序經(jīng)過編譯基本上就是匯編語(yǔ)言的形態(tài)了。嚴(yán)格說(shuō),是二進(jìn)制數(shù)據(jù),匯編是把二進(jìn)制的指令用詞語(yǔ)表現(xiàn)出來(lái)而已。如果理解了匯編你就能輕松理解C的指針是個(gè)什么鬼,它加來(lái)加去的到底是在干什么。為什么要編譯,什么是鏈接。為什么C要有主函數(shù),為什么變量要定義類型,函數(shù)是怎么回事。
1、要精通c語(yǔ)言,不需要學(xué)習(xí)匯編;C語(yǔ)言其實(shí)是很簡(jiǎn)單的,很多時(shí)候是windows下的ide把c語(yǔ)言開發(fā)搞復(fù)雜了,可以參考我的頭條號(hào)里面的幾個(gè)介紹c語(yǔ)言的文章。
2、建議在linux下用gcc學(xué)習(xí)c語(yǔ)言,c語(yǔ)言是一門系統(tǒng)級(jí)語(yǔ)言,只要掌握了指針,就可以很靈活的控制內(nèi)存和程序流程;
3、c語(yǔ)言的很多庫(kù)都是通過指針對(duì)外提供api;
4、很多嵌入式芯片都有提供c語(yǔ)言的庫(kù)封裝;多線程庫(kù)在不同的平臺(tái)和芯片庫(kù)里面有不同的實(shí)現(xiàn)方式;記得以前做arduino的時(shí)候,多線程要自己控制中斷;而lpc2368的armv7架構(gòu)的多線程是用mailbox方式實(shí)現(xiàn)。只要掌握了linux平臺(tái)的gcc的c語(yǔ)言,就能很輕松的進(jìn)行不同芯片的嵌入式開發(fā)。
5、原來(lái)開發(fā)lpc2368的bootloader的時(shí)候,官方的例子是匯編,而我直接用c語(yǔ)言的指針實(shí)現(xiàn)了同樣的功能。
完全不需要!請(qǐng)把精力放在算法實(shí)現(xiàn),模型建立,API調(diào)用,人機(jī)界面,網(wǎng)絡(luò)與通信等有用的地方。CPU發(fā)展很快,自己寫那幾句匯編比編譯器高明不了多少。做應(yīng)用軟件開發(fā),根本不需要匯編。你要是打算做操作系統(tǒng)等系統(tǒng)軟件,那倒是真得結(jié)合目標(biāo)CPU好好研究匯編。
到此,以上就是小編對(duì)于disassembly機(jī)械原理的問題就介紹到這了,希望介紹關(guān)于disassembly機(jī)械原理的1點(diǎn)解答對(duì)大家有用。