溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

內(nèi)核基礎(chǔ)---AT&T匯編與x86匯編的區(qū)別

發(fā)布時(shí)間:2020-02-29 10:04:48 來(lái)源:網(wǎng)絡(luò) 閱讀:1271 作者:匯天下豪杰 欄目:開發(fā)技術(shù)

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ǔ)句,的牢牢的掌握!!!




向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI