從c**生成彙編**
gcc -o2 -s code.c -m32 -fno-omit-frame-pointer
編譯.s檔案為.o檔案
as -o code.o code.s --32
使用gdb除錯則加
-gstabs
鏈結.o檔案生成可執行檔案
ld -o exe code1.o code2.o -m elf_i386
呼叫lib_c庫函式
ld命令加上引數,-m引數也不能丟
-lc -dynamic-linker /lib/ld-linux.so.2
output:
.asciz "the number is %d\n"
num:
.long 666
.section .text
.globl _start
_start:
movl $num, %eax
pushl (%eax)
push
$output
call printf
addl $8, %esp
push
$0 call exit
儲存為test.s,然後使用命令
as test.s -o test.o --32
ld test.o -o test -m elf_i386 -lc -dynamic-linker /lib/ld-linux.so.2
./test
即可觀察到輸出。
1.資料
c宣告intel資料型別
彙編**字尾
大小(位元組)
char位元組b
1short字w
2int雙字l
4long int雙字l
4char*雙字l
4float
單精度s
4double
雙精度l
8long double
擴充套件精度
t10/12
組合語言指令所處理的資料型別一般是採用組合語言的字尾來進行區分。
組合語言基礎
1.資料格式 26d 十進位制 1ah 十六進製制 42 o g 八進位制 以字母開頭的十六進製制常量前面必須加乙個0,以防止彙編器將其解釋為識別符號 2.盡量在表示式中使用圓括號顯式表明運算順序 3.彙編器大量使用 符號做為預定義符號的字首,因此應盡量避免在自己定義的標誌符前用 但 myfile為...
組合語言基礎
暫存器 暫存器是處理器內部的高速緩衝區,用於暫時存放資料。暫存器的分類 透明暫存器 這類暫存器不需要程式設計師進行操作。可程式設計的暫存器 這是我們程式設計師需要學習的這類暫存器又分為通用暫存器和專用暫存器 32位通用暫存器 eax ebx ecx edx edi esi ebp esp 16位通用...
組合語言基礎
標誌暫存器flags of df iftf sfzf afpf cf標誌暫存器flags cf 進製標誌 pf 奇偶標誌 af 調整標誌 zf 零標誌 sf 符號標誌 of 溢位標誌 df 方向標誌 if 中斷允許標誌 tf 陷阱標誌 r8 r16 任意乙個8 16位通用暫存器 reg代表r8或r1...