成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux下的匯編語言之語法格式介紹

運維 系統運維
匯編語言是基本的語言之一,他的明顯優勢是速度快,可以直接對硬件進行操作。Linux下如何使用匯編語言,語法格式有哪些?需要使用哪些開發工具?本文將會為大家詳細道來。

       作為最基本的編程語言之一,匯編語言雖然應用的范圍不算很廣,但重要性卻勿庸置疑,因為它能夠完成許多其它語言所無法完成的功能。就拿 Linux 內核來講,雖然絕大部分代碼是用 C 語言編寫的,但仍然不可避免地在某些關鍵地方使用了匯編代碼,其中主要是在 Linux 的啟動部分。由于這部分代碼與硬件的關系非常密切,即使是 C 語言也會有些力不從心,而匯編語言則能夠很好揚長避短,***限度地發揮硬件的性能。

***課時:Linux 匯編語法格式:

  絕大多數 Linux 程序員以前只接觸過DOS/Windows 下的匯編語言,這些匯編代碼都是 Intel 風格的。但在 Unix 和 Linux 系統中,更多采用的還是 AT&T 格式,兩者在語法格式上有著很大的不同:

  在 AT&T 匯編格式中,寄存器名要加上 '%' 作為前綴;而在 Intel 匯編格式中,寄存器名不需要加前綴。例如:

  AT&T 格式pushl %ex

   Intel 格式push eax

  在 AT&T 匯編格式中,用 '$' 前綴表示一個立即操作數;而在 Intel 匯編格式中,立即數的表示不用帶任何前綴。例如:

  AT&T 格式 pushl $1

  Intel 格式push 1

  AT&T 和 Intel 格式中的源操作數和目標操作數的位置正好相反。在 Intel 匯編格式中,目標操作數在源操作數的左邊;而在 AT&T 匯編格式中,目標操作數在源操作數的右邊。例如:

  AT&T 格式addl $1, %eax

   Intel 格式add eax, 1

  在 AT&T 匯編格式中,操作數的字長由操作符的***一個字母決定,后綴'b'、'w'、'l'分別表示操作數為字節(byte,8 比特)、字(word,16 比特)和長字(long,32比特);而在 Intel 匯編格式中,操作數的字長是用 "byte ptr" 和 "word ptr" 等前綴來表示的。例如:

  AT&T 格式movb val, %al

   Intel 格式mov al, byte ptr val

  在 AT&T 匯編格式中,絕對轉移和調用指令(jump/call)的操作數前要加上'*'作為前綴,而在 Intel 格式中則不需要。

  遠程轉移指令和遠程子調用指令的操作碼,在 AT&T 匯編格式中為 "ljump" 和 "lcall",而在 Intel 匯編格式中則為 "jmp far" 和 "call far",即:

  AT&T 格式 ljump $section, $offset   lcall $section, $offset

  Intel 格式jmp far section:offset   call far section:offset

  與之相應的遠程返回指令則為:

  AT&T 格式 lret $stack_adjustret

  Intel 格式far stack_adjust

  在 AT&T 匯編格式中,內存操作數的尋址方式是:section:disp(base, index, scale)

  而在 Intel 匯編格式中,內存操作數的尋址方式為:section:[base + index*scale + disp]

  由于 Linux 工作在保護模式下,用的是 32 位線性地址,所以在計算地址時不用考慮段基址和偏移量,而是采用如下的地址計算方法:

  disp + base + index * scale

  下面是一些內存操作數的例子:

  AT&T 格式movl -4(%ebp), %eax  movl array(, %eax, 4), %eax  movw array(%ebx, %eax, 4), %cx  movb $4, %fs:(%eax)

    Intel 格式mov eax, [ebp - 4]     mov eax, [eax*4 + array]     mov cx, [ebx + 4*eax + array]      mov fs:eax, 4

【編輯推薦】

  1. 2.3 用匯編語言編寫程序
  2. 術語匯編 基本CSS濾鏡概述
  3. 琢石成器—Windows環境下32位匯編語言程序設計
  4. 3.1.3 as86匯編語言程序的編譯和鏈接
  5. 3.1.2 as86匯編語言程序
  6. 3.1.1 as86匯編語言語法
  7. 3.2.6 as匯編命令


 

責任編輯:zhaolei 來源: 網絡
相關推薦

2011-01-14 14:08:17

Linux匯編語言

2011-01-14 14:39:32

Linux匯編語言

2011-01-14 14:22:50

Linux匯編語言

2011-01-14 14:15:11

Linux匯編語言

2021-03-25 13:05:56

網絡安全寄存器匯編語言

2012-02-09 09:00:54

匯編語言

2021-06-11 10:02:39

語言編程開發

2011-01-04 17:08:10

匯編語言

2018-01-11 14:58:40

2010-11-09 09:51:52

匯編語言

2022-10-31 14:02:24

匯編語言神經網絡

2022-03-28 13:34:26

Go泛型部署泛型

2023-11-23 08:25:40

開發人員SmaliAndroid

2011-07-21 09:59:26

JavaScript

2023-06-01 16:27:34

匯編語言函數

2017-01-12 22:36:30

2010-01-11 11:09:10

C++語法

2012-02-13 10:03:31

編程開發

2012-08-13 14:13:46

2021-04-27 07:59:11

內聯匯編 C 語言 asm 關鍵字
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久亚洲 | 99精品免费在线观看 | 成年人视频在线免费观看 | 一区二区三区免费观看 | 亚洲欧洲小视频 | 国产一区二区久久 | 青娱乐av| 久久综合国产 | 国产乱码精品一区二区三区av | 狠狠的操 | 福利精品在线观看 | 精品无码久久久久久国产 | 婷婷开心激情综合五月天 | 久久精品亚洲国产 | 午夜久草| 视频一区二区三区四区五区 | 亚洲 中文 欧美 日韩 在线观看 | 亚洲成人自拍网 | 欧美久久精品一级c片 | 亚洲一区视频在线播放 | 久久久91精品国产一区二区三区 | 成人免费xxxxx在线视频 | 久久久国产一区二区三区 | 中文字幕在线一 | 欧美日韩不卡合集视频 | 国产精品久久久久一区二区三区 | 欧美韩一区二区 | 久草视频在线播放 | 天天干夜夜 | 天天看天天干 | 黑人巨大精品欧美一区二区免费 | 在线午夜 | 国产欧美在线 | 国产精品久久久久久久久久久久午夜片 | 国产精品久久久久一区二区三区 | 男女爱爱福利视频 | 精品久久久久久久久久久久 | 亚洲福利免费 | 欧美大片一区 | 日本激情视频中文字幕 | av国产在线观看 |