您好,登錄后才能下訂單哦!
1、深入Linux內(nèi)核的前提
因?yàn)橐郧皩W(xué)習(xí)過(guò)intel的x86匯編語(yǔ)言,所以本文就不在講述匯編的基本語(yǔ)法了;
內(nèi)核絕大部分的代碼都是用C和匯編語(yǔ)言實(shí)現(xiàn)的,要理解內(nèi)核,C語(yǔ)言大部分的人都已經(jīng)掌握了,接下來(lái)就得首先掌握匯編知識(shí),以便深入理解Linux內(nèi)核知識(shí)?。?!
2、學(xué)習(xí)Linux內(nèi)核的線路
首先內(nèi)核有基礎(chǔ)部分和深入的部分,我認(rèn)為應(yīng)該從一個(gè)全局的角度去解讀Linux內(nèi)核,以便我們達(dá)到一個(gè)更加深刻的認(rèn)識(shí),從內(nèi)核的整體架構(gòu)--->內(nèi)核源碼的解讀,并且在這個(gè)的過(guò)程中不斷的去修改代碼,編程調(diào)試是至關(guān)重要的?。?!
3、AT&T匯編的不同之處
(1)、寄存器的引用
在AT&T匯編的格式下,寄存器的前面要加上:%, %eax;
(2)、操作數(shù)的順序
mov %eax(源), %ebx(目的)
(3)、常數(shù)/立即數(shù)的格式
使用立即數(shù),要在數(shù)的前面加上$, mov $4;
(4)、操作數(shù)的長(zhǎng)度
操作數(shù)的長(zhǎng)度用加在指令后的符號(hào)表示
b(byte), w(word), l(long), movw %ax, %bx;
(5)、轉(zhuǎn)移指令
ljump和lcall,在Intel中的格式為:jmp far 和 call far;
(6)、尋址方式
偏移量移到了前面了,
4、嵌入式在C語(yǔ)言-->嵌入式匯編
_asm_代表了嵌入式匯編的語(yǔ)句;
a, b, c, d 分別代表寄存器eax、ebx、ecx、edx;
S、D 表示寄存器esi edi;
r 表示任何寄存器;
閱讀內(nèi)核代碼有可能出現(xiàn)嵌入式匯編語(yǔ)句,的牢牢的掌握!!!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。