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

“C語言” 讀書札記之[讓我們一起學匯編]

開發 前端
這幾天滿腦子都是寄存器,存儲器——主要是卡在匯編語言上了,所以博文進度比較緩慢。今天就先講講如何定義數據元素吧?因為匯編語言程序最重要的任務之一就是處理對象。

 

介紹

這幾天滿腦子都是寄存器,存儲器——主要是卡在匯編語言上了,所以博文進度比較緩慢。

今天就先講講如何定義數據元素吧?因為匯編語言程序最重要的任務之一就是處理對象。

三個最常用的段:

1、數據段:數據段聲明帶有初始值的數據元素。這些數據元素用作匯編語言程序中的變量。

2、bbs段:bbs段聲明使用零(或者null)值初始化的數據元素。這些數據元素常用做匯編語言程序中的緩沖區。

3、文本段:在可執行程序內聲明指令碼的地方。

1、定義段

GNU匯編器使用.section命令語句聲明段。語法:.section 類型(.data,.bss,.text)

以下是匯編語言程序的布局。

2、定義起始點

1)當匯編語言程序被轉換為可執行文件時,鏈接器必須知道指令中的起始點是什么

GNU匯編器聲明一個默認標簽,或者說標識符,它應該用作應用程序的入口點。_start便簽用于標明程序應該從這條指令開始運行。

2)除了應用程序中聲明起始標簽之外,還需要為外部應用程序提供入口點。這是使用.globl命令完成的。

了解上述信息就可以為所有匯編語言程序創建基礎模板。如下:

有了這樣的模板,就準備好了開始編寫匯編語言程序。

#p#

3、創建簡單程序

我們來演示上面那些組件如何組合在一起使用。

先寫個簡單的"hello,world“,很多語言不都這么搞嗎?我也不免俗。——其他部分我會在后期的文章中說明。

  1. .section .data  
  2.   output:  
  3.      .ascii "hello,world\n"    
  4.   .section .text  
  5.   .globl _start  
  6.   _start:  
  7.      movl $4, %eax  
  8.      movl $1, %ebx  
  9.      movl $output, %ecx  
  10.      movl $13, %edx  
  11.      int $0x80   
  12.  #success exit  
  13.      movl $1, %eax  
  14.      movl $0, %ebx  
  15.      int $0x80 

 [[80797]]匯編并且鏈接這個過程

數據段

1)數據段定義的數據元素都保留在內存中

NOTE

用.data數據段定義的任何數據元素可以按照讀取和寫入模式訪問。

用.rodata數據段定義的任何數據元素只能按照只讀(read-only)模式訪問。——因此使用ro前綴。


 

2)數據段定義數據元素需要用到兩個語句:

一個標簽:像C語言中變量名稱,用作引用數據元素所使用的標記。——標簽對處理器是沒有意義的,它只是匯編器試圖訪問內存位置時用作引用指針的一個位置。(機器碼中使用bit表示這個標記)

一個命令:定義數據元素保留多少個字節。

3)下表介紹為特定數據元素類型保留內存的不同命令。

4)我們來觀察一下在內存中分布情況,為了表達更清楚,我再寫一個例子。

[[80797]]內存分布圖

#p#

觀察

按照數據段中定義數據元素的順序,每個數據元素被存放到內存中。帶有多個值的元素按照命令中列出的順序存放(如msg和length)

靜態符號

.equ命令用于把常量(呵呵,這個不用說,常量嗎?在程序中是不能改動的,這也是它最大的特色)設置為可以在文本段(我們可以理解為指令段)中使用的符號。設置方法如下

 NOTE

  .equ命令可以出現在數據段的任何位置,但是為了方便閱讀,最好集中定義在最前或最后。

以上兩種都是定義在數據段中,這也是在匯編中經常使用的方法。下面介紹另外一種段聲明——bbs段。

bss段

bbs段只聲明原始內存部分。

GNU匯編器使用兩個命令聲明緩沖區。

#p#

總結

我一直在想從哪個角度能輸入剖析C語言,很多資料顯示從匯編和機器語言角度去理解C語言,方能真正明白。我也看了很多資料,覺得應該從最最基礎的方面進行。所以今天先談到這里。——要知后事如何,下回分解。

這兩天參考的資料

《匯編語言》——這書主要是針對windows 平臺,語法使用的是intel語法。而我的平臺,也是我的工作平臺,習慣平臺是linux,而linux采用的是“AT&T語法“。所以我也就看了前幾章有關硬件方面的內容(但是也沒看懂多少東西,呵呵)。

《匯編語言程序設計》——這書是我側重點看的,直接跳到第二部分基礎語言部分進行研究。

《Linux C編程一站式學習》——這書我著重看了幾遍“x86匯編程序基礎”。收益匪淺。

《深入理解計算機系統》——這書我也是輕微的看了一下,很多地方還是沒有怎么弄懂。我還得多看幾遍。

原文鏈接:http://www.cnblogs.com/baochuan/archive/2012/06/28/2564489.html

【編輯推薦】

  1. “C語言” 讀書札記之[程序和編程語言]
  2. “C語言” 讀書札記之[編譯執行]
  3. “C語言” 讀書札記之[再續編譯執行]
  4. 簡單實用的jQuery圖片播放實例和源碼

 
 
責任編輯:張偉 來源: 川山甲的博客
相關推薦

2012-06-25 10:00:29

C語言

2012-06-23 18:13:39

C語言

2012-06-25 10:14:10

C語言

2012-07-12 14:06:10

C語言

2022-07-10 23:15:46

Go語言內存

2022-03-31 18:59:43

數據庫InnoDBMySQL

2021-08-27 07:06:10

IOJava抽象

2021-12-29 08:27:05

ByteBuffer磁盤服務器

2022-03-08 17:52:58

TCP格式IP

2021-11-26 07:00:05

反轉整數數字

2021-07-15 07:23:28

Singlefligh設計

2022-02-14 10:16:22

Axios接口HTTP

2016-09-06 10:39:30

Dell Techno

2022-06-26 09:40:55

Django框架服務

2022-02-14 07:03:31

網站安全MFA

2023-08-14 08:38:26

反射reflect結構體

2021-11-29 07:24:08

ACID事務大數據

2023-08-02 08:35:54

文件操作數據源

2022-08-01 07:57:03

數組操作內存

2012-04-14 20:47:45

Android
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费观看的av毛片的网站 | 最新免费黄色网址 | www.天天干.com | 午夜大片| 中文字幕黄色大片 | 中文字幕高清视频 | 综合色播 | 天天干夜夜操 | 成人精品网| 91在线视频 | 男女羞羞免费网站 | 久久综合久久综合久久综合 | 国产最新精品视频 | 欧美a级网站 | 99re视频精品 | 国产欧美精品一区二区 | 人人玩人人干 | 成人精品 | 成人免费大片黄在线播放 | 日韩国产中文字幕 | 给我免费的视频在线观看 | 日韩2020狼一二三 | 91精品中文字幕一区二区三区 | 国产精品久久久久久久免费大片 | 精品中文视频 | 玖玖操 | 日本在线综合 | 狠狠的操 | 一区二区三区国产好的精 | 国产精品网页 | 91美女在线观看 | 国产日韩欧美激情 | 欧美日韩在线观看视频网站 | 在线色网 | 国产精品一二三区 | 精品一区二区av | 久久精品免费看 | av国产精品毛片一区二区小说 | 精品三级| 日本视频中文字幕 | 国产精华一区 |