自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux下的匯編語言之系統(tǒng)調用

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

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

第四課時:Linux 命令行參數(shù)

   在 Linux 操作系統(tǒng)中,當一個可執(zhí)行程序通過命令行啟動時,其所需的參數(shù)將被保存到棧中:首先是 argc,然后是指向各個命令行參數(shù)的指針數(shù)組 argv,最后是指向環(huán)境變量的指針數(shù)據(jù) envp。在編寫匯編語言程序時,很多時候需要對這些參數(shù)進行處理,下面的代碼示范了如何在匯編代碼中進行命令行參數(shù)的處理:

  例3. 處理命令行參數(shù)

  

  1. # args.s  
  2.  
  3.   .text  
  4.  
  5.   .globl _start  
  6.  
  7.   _start:  
  8.  
  9.   popl %ecx # argc  
  10.  
  11.   vnext:  
  12.  
  13.   popl %ecx # argv  
  14.  
  15.   test %ecx, %ecx # 空指針表明結束  
  16.  
  17.   jz exit  
  18.  
  19.   movl %ecx, %ebx  
  20.  
  21.   xorl %edx, %edx  
  22.  
  23.   strlen:  
  24.  
  25.   movb (%ebx), %al  
  26.  
  27.   inc %edx  
  28.  
  29.   inc %ebx  
  30.  
  31.   test %al, %al  
  32.  
  33.   jnz strlen  
  34.  
  35.   movb $10, -1(%ebx)  
  36.  
  37.   movl $4, %eax # 系統(tǒng)調用號(sys_write)  
  38.  
  39.   movl $1, %ebx # 文件描述符(stdout)  
  40.  
  41.   int $0x80  
  42.  
  43.   jmp vnext  
  44.  
  45.   exit:  
  46.  
  47.   movl $1,%eax # 系統(tǒng)調用號(sys_exit)  
  48.  
  49.   xorl %ebx, %ebx # 退出代碼  
  50.  
  51.   int $0x80  
  52.  
  53.   ret  
  54.  

【編輯推薦】

  1. 2.3 用匯編語言編寫程序
  2. 術語匯編 基本CSS濾鏡概述
  3. 琢石成器—Windows環(huán)境下32位匯編語言程序設計
  4. 3.1.3 as86匯編語言程序的編譯和鏈接
  5. 3.1.2 as86匯編語言程序
  6. 3.1.1 as86匯編語言語法
  7. 3.2.6 as匯編命令
責任編輯:zhaolei 來源: 網(wǎng)絡轉載
相關推薦

2011-01-14 14:15:11

Linux匯編語言

2011-01-14 14:08:17

Linux匯編語言

2011-01-14 14:39:32

Linux匯編語言

2011-01-14 13:44:45

Linux匯編語言

2018-01-11 14:58:40

2021-03-25 13:05:56

網(wǎng)絡安全寄存器匯編語言

2012-02-09 09:00:54

匯編語言

2021-06-11 10:02:39

語言編程開發(fā)

2011-01-04 17:08:10

匯編語言

2010-11-09 09:51:52

匯編語言

2022-10-31 14:02:24

匯編語言神經(jīng)網(wǎng)絡

2023-11-23 08:25:40

開發(fā)人員SmaliAndroid

2011-07-21 09:59:26

JavaScript

2023-06-01 16:27:34

匯編語言函數(shù)

2017-01-12 22:36:30

2009-06-14 21:54:37

動態(tài)語言Java腳本API

2022-04-22 15:06:59

C++PythonJava

2012-02-13 10:03:31

編程開發(fā)

2012-08-13 14:13:46

2010-06-13 15:35:01

點贊
收藏

51CTO技術棧公眾號