AT&T ASM 學習2

數據段:帶有初始值的數據
bss段:初始值爲0(NULL)的數據
文本段:代碼
--------------------------------------------------
_start
.globl
--------------------------------------------------
CPUID指令:
根據EAX輸出CPU信息到EBX,ECX,EDX
--------------------------------------------------
STDOUT的文件描述符爲1
--------------------------------------------------
int $0x80
eax=4   write函數
eax=1   exit函數

--------------------------------------------------

as,gcc都可以編譯彙編源文件

as以_start爲入口

gcc以main爲入口

--------------------------------------------------

在GDB中對彙編設斷點 :

break * label+offset

由於GDB的bug在_start標籤後加一條nop指令,然後break * _start+1

--------------------------------------------------

info registers                 -->i r

--------------------------------------------------

print $eax 默認爲十進制         -->p $eax

print/d $eax 十進制               -->p/d $eax

print/t $eax 二進制                -->p/t $eax

print/x $eax 十六進制             -->p/x $eax

--------------------------------------------------

x/nyz:顯示內存特定位置的值

n:字段數                                              #默認1

y:格式 c 字符/d 十進制/x 十六進制           #默認16

z:字段長度 b 8位/h 16位/w 32位            #默認32

x/42cb &output

x/d  &value

--------------------------------------------------

.ascii 末尾不加空字符(0,NULL)

.asciz 末尾加空字符(0,NULL)

--------------------------------------------------

彙編調用c庫

ld -o AAA -lc BBB.o    #-lc : /lib/libx.so --> /lib/libc.so  #這個是導入庫

ld -dynamic-linker /lib/ld-linux.so.2 -o AAA -lc BBB.o

 

發佈了22 篇原創文章 · 獲贊 6 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章