日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言gcc汇编文件,[汇编]gcc生成汇编.s文件 $ gcc -Og -S sum.c /$ gcc -Og -S -masm=intel sum.c 与 反汇编 objdump...

發布時間:2024/7/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言gcc汇编文件,[汇编]gcc生成汇编.s文件 $ gcc -Og -S sum.c /$ gcc -Og -S -masm=intel sum.c 与 反汇编 objdump... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

- C語言源碼文件:sum.c

- gcc 生成的匯編語言文件 sum.s

x86-64 AT&T 語法格式

x86-64 Intel格式

- 反匯編 objdump

3.1 輸出 AT&T格式 objdump -d sum

3.2 輸出 Intel格式 objdump -M intel -d sum

C語言源碼文件:sum.c

加法:c = a + b

#include

int main(int argc,char *argv[])

{

int a = 1;

int b = 2;

int c = 0;

c = a+b;

printf("%d",c);

return 0;

}

gcc 生成的匯編語言文件 sum.s

x86-64 處理器 AT&T 格式

在命令行$ 輸入 gcc -Og -S sum.c

大寫的字母O、大寫的字母S

.file "sum.c"

.section .rodata.str1.1,"aMS",@progbits,1

.LC0:

.string "%d"

.text

.globl main

.type main, @function

main:

.LFB24:

.cfi_startproc

subq $8, %rsp

.cfi_def_cfa_offset 16

movl $3, %edx

movl $.LC0, %esi

movl $1, %edi

movl $0, %eax

call __printf_chk

movl $0, %eax

addq $8, %rsp

.cfi_def_cfa_offset 8

ret

.cfi_endproc

.LFE24:

.size main, .-main

.ident "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4"

.section .note.GNU-stack,"",@progbits

x86-64 處理器 Intel格式

在命令行$ 輸入 gcc -Og -S -masm=intel sum.c

大寫的字母O、大寫的字母S

.file "sum.c"

.intel_syntax noprefix

.section .rodata.str1.1,"aMS",@progbits,1

.LC0:

.string "%d"

.text

.globl main

.type main, @function

main:

.LFB24:

.cfi_startproc

sub rsp, 8

.cfi_def_cfa_offset 16

mov edx, 3

mov esi, OFFSET FLAT:.LC0

mov edi, 1

mov eax, 0

call __printf_chk

mov eax, 0

add rsp, 8

.cfi_def_cfa_offset 8

ret

.cfi_endproc

.LFE24:

.size main, .-main

.ident "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4"

.section .note.GNU-stack,"",@progbits

反匯編 objdump

1、 生成可執行文件 sum

anno@anno-m:~/Desktop$ gcc -Og -o sum sum.c

2、查看當前文件結構

anno@anno-m:~/Desktop$ ls

sum sum.c sum.s

3.1 輸出 AT&T格式 objdump -d sum

執行反匯編,sum 是第1步生成的可執行文件,也就是程序文件

直接顯示在屏幕上

anno@anno-m:~/Desktop$ objdump -d sum

輸出到指定文件,ATT.me 是自己取得名字,隨便寫

anno@anno-m:~/Desktop$ objdump -d sum > ATT.me

AT&T格式: main函數部分

000000000040055d :

40055d: 48 83 ec 08 sub $0x8,%rsp

400561: ba 03 00 00 00 mov $0x3,%edx

400566: be 14 06 40 00 mov $0x400614,%esi

40056b: bf 01 00 00 00 mov $0x1,%edi

400570: b8 00 00 00 00 mov $0x0,%eax

400575: e8 e6 fe ff ff callq 400460 <__printf_chk>

40057a: b8 00 00 00 00 mov $0x0,%eax

40057f: 48 83 c4 08 add $0x8,%rsp

400583: c3 retq

400584: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)

40058b: 00 00 00

40058e: 66 90 xchg %ax,%ax

3.2 輸出 Intel格式 objdump -M intel -d sum

執行反匯編,sum 是第1步生成的可執行文件,也就是程序文件

直接顯示在屏幕上

anno@anno-m:~/Desktop$ objdump -M intel -d sum

輸出到指定文件,Intel.me 是自己取得名字,隨便寫

anno@anno-m:~/Desktop$ objdump -M intel -d sum > Intel.me

Intel 格式:main函數部分(啊~是熟悉的味道!)

000000000040055d :

40055d: 48 83 ec 08 sub rsp,0x8

400561: ba 03 00 00 00 mov edx,0x3

400566: be 14 06 40 00 mov esi,0x400614

40056b: bf 01 00 00 00 mov edi,0x1

400570: b8 00 00 00 00 mov eax,0x0

400575: e8 e6 fe ff ff call 400460 <__printf_chk>

40057a: b8 00 00 00 00 mov eax,0x0

40057f: 48 83 c4 08 add rsp,0x8

400583: c3 ret

400584: 66 2e 0f 1f 84 00 00 nop WORD PTR cs:[rax+rax*1+0x0]

40058b: 00 00 00

40058e: 66 90 xchg ax,ax

4、小小的觀察

機器碼當然都是一樣的,都是x86-64處理器指令集;

只是匯編代碼格式不同(即匯編代碼的語法不同);

說白了,就是給人看的匯編代碼有所不同,但是給機器跑的機器碼一模一樣;

5、 再次看文件結構

anno@anno-m:~/Desktop$ ls

ATT.me Intel.me sum sum.c sum.s

截圖參考

[生成匯編文件.s X86-64 AT&T格式]gcc -Og -S sum.c

[生成匯編文件.s X86-64 Intel格式]gcc -Og -S -masm=intel sum.c

引用參考

How can objdump emit intel syntax

How can I tell objdump to emit assembly in Intel Syntax rather than the default AT&T syntax?

Q:怎樣告訴objdump,"我想要(反匯編出來)Intel格式 的匯編代碼,我不要默認的 AT&T格式 的”?

A:objdump -M intel -d program_name

總結

以上是生活随笔為你收集整理的c语言gcc汇编文件,[汇编]gcc生成汇编.s文件 $ gcc -Og -S sum.c /$ gcc -Og -S -masm=intel sum.c 与 反汇编 objdump...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美丝袜脚交 | 又黄又爽在线观看 | 国产精品乱码一区 | 人妻少妇精品无码专区二区 | 美女主播福利视频 | 日本黄视频在线观看 | 成人黄色av | 亚洲网站在线免费观看 | 欧美精品一区二区三 | jizzjizz日本人 | 国产精品自拍亚洲 | 深夜免费福利视频 | 亚洲在线国产 | 精品美女在线 | 福利电影在线播放 | 三上悠亚ed2k | 日韩伦理视频 | 欧美激情aaa | 免费看女人裸体 | 国产日产亚洲精品 | 五月激情天 | 亚洲高清毛片 | 真实的中国女人做爰 | 久久婷婷激情 | 悟空影视大全免费高清观看在线 | 韩国19主播内部福利vip | porn国产| 色一情一区二区三区四区 | 亚洲女人天堂色在线7777 | 国产精品一 | 国产精品一区二区电影 | 插吧插吧网 | 五月花成人网 | 国产一级特黄a高潮片 | 日本精品久久久 | 日本黄网站色大片免费观看 | 国产美女久久久久久 | av狠狠操 | 凹凸精品熟女在线观看 | 毛片网站在线 | 杨贵妃颤抖双乳呻吟求欢小说 | 性一交一乱一透一a级 | 2018天天干天天操 | aise爱色av | 欧美一区二区三区电影 | 丰满的人妻hd高清日本 | 传媒一区二区 | 一级片在线播放 | 欧美性大战久久久久久久 | 久久网国产| 天堂在线成人 | 蜜臀久久久久久999 大陆熟妇丰满多毛xxxⅹ | www.久久成人 | 高清日韩一区二区 | 强行挺进皇后紧窄湿润小说 | 激情视频在线免费观看 | 丰满女人又爽又紧又丰满 | 亚洲一区二区自拍 | www.在线看 | 亚洲黄页 | 国产免费内射又粗又爽密桃视频 | 久久久久亚洲av片无码下载蜜桃 | 天堂а在线中文在线新版 | 久草福利资源站 | 黑人3p波多野结衣在线观看 | 黄色成人av在线 | 久草视频免费在线观看 | 中文字幕在线播放视频 | 国外精品视频 | av有码在线 | 精品人妻午夜一区二区三区四区 | 超碰在线99| 国产人妻互换一区二区 | 午夜精品久久久久久久久 | 两性视频久久 | 欧美日批| 亚洲热视频| wwwxxxx国产 | 久久久精品影视 | 在线观看深夜视频 | 日韩中文字幕精品视频 | 久久国产视频一区 | 欧美精品小视频 | 又污又黄又爽的网站 | 日韩免费在线 | 国产精品久久久久一区二区三区 | 丁香花电影免费播放电影 | 一区三区视频在线观看 | 男男做的视频 | beeg日本高清xxxx18| 人人爽人人香蕉 | 性自由色xxxx免费视频 | 国产精品伦一区二区 | 另类综合在线 | 天天摸天天操天天干 | 69久久久| 日韩av在线播放网址 | 久久不卡影院 | 天天操婷婷 |