AT T學習筆記彙編之呼叫彙編庫

2021-06-29 13:51:02 字數 2062 閱讀 4808

呼叫彙編庫:

程式堆疊

引數3引數2

引數1返回位址

舊的ebp值    esp

區域性變數。。。

可以安全使用mmx sse 但是必須小心使用fpu

必須保留ebx edi esi ebp esp

eax     用於儲存輸出值

ebx    用於指向全域性偏移表

ecx    在函式中可用

edx    在函式中可用

ebp    c中作為基位址指標 必須保留

esp    在函式中用於指向新的堆疊位置 必須保留

edi    區域性暫存器 必須保留

esi    區域性暫存器 必須保留

st(0)    用於儲存浮點值,但是可能在函式返回之前被修改

st(1)-(7)    在函式中可用

c語言呼叫彙編模板

.section    .text

.type    func , @function

func:

pushl    %ebp

movl    %esp    ,    %ebp

subl    $12    ,    %esp

pushl    %edi

pushl    %esi

pushl    %ebx

....function code

popl    %ebx

popl    %esi

popl    %edi

movl    %ebp    ,    %esp

popl    %ebp

ret64位整數,返回值存放在edx:eax中。

對字串返回位址值

c語言預設返回整數值,返回其它型別必須宣告

原型通常放在define include語句之後,必須在main函式之前。

c樣式使用st(0)在函式之間交換浮點值。

精度不是特別重要。

呼叫函式能夠按照錯誤的順序把值存放到堆疊中。

彙編函式能夠按照錯誤的順序從堆疊中讀取值。

靜態庫:ar

ar d 從存檔檔案中刪除檔案

m 把檔案移動到存檔檔案中

p 把存檔檔案中指定的檔案輸出到標準輸出流

q 快速把檔案追加到存檔檔案中

r 把檔案插入(替換)到存檔檔案中。

t 顯示存檔檔案中的檔案列表

x 從存檔檔案提取檔案

修飾: a 新增到後面 b 前面 c 建立 f 截短存檔檔名稱

i p s u v

約定  libx.a

ar r libcgap14.a square.o cpuidfunc.o areafunc.o greater.o fpmathfunc.o

ranlib 建立顯示存檔檔案索引

nm -s libchap14.a | more

使用庫來編譯不會影響可執行檔案長度

共享庫libx.so

gcc -shared -o libchap14.so square.o cpuidfunc.o areafunc.ogcc -o inttest -l. -lchap14 inttest.c

動態載入找不到相應函式**

ldd inttest

/etc/ld.so.conf     ldconfig

export ld_library_path="$ld_library_path:."

除錯彙編函式 gcc -gstabs

編譯器優化:

優化運算,變數,迴圈,條件分支,通用子表示式。

優化變數:

使用.data .bss段在記憶體定義變數。

使用ebp基址針在堆疊中定義變數

使用可用的暫存器儲存變數。

直接使用常量。

迴圈使用暫存器控制次數

.p2align 4,,7

.p2align number , value , max

number 位址中必須為0的低位0位的位數。

value填充位元組中使用的值。跳過則為0

max 對準指令應該跳過的最大位元組數。7表示對準下一段應該跳過的位元組數量不應該超過7個位元組。否則會跳過改指令。

AT T彙編學習筆記之字串

movsb 傳送單位元組 movsw movsl 傳送雙字 源運算元esi指向記憶體位置 edi目的運算元 movl output edi lea指定記憶體位置 源運算元必須指向乙個記憶體位置 leal output edi eflags df決定傳送方向 正向0 cld 反向 1 std std向...

at t彙編學習(一)

工作一年了,很是迷茫,乙個程式設計師不知到何去何從,現在網際網路上每天都會出現大量的程式語言,大量的新技術,感覺沒有自己的方向。找不到方向就積累知識。at t組合語言的基本框架如下所示 section data section text globl start start movl 1,eax mo...

iOS 學習 AT T彙編

at t彙編和8086組合語言雖然兩者很相似,但是還是不能根據8086的語法規則來讀at t彙編的吧,所以還是要看看at t彙編的語法規則,因為在讀核心 時,跟硬體打交道的部分 是用at t彙編編寫的,所以不可避免的會遇到at t彙編,下面先來看看at t彙編的語法規則吧。一 大小寫 intel格式...