汇编和可执行文件(Debug和Release)
匯編和可執(zhí)行文件
匯編約等于機(jī)器碼
?
C/C++->編譯器->匯編(機(jī)器)
?
編譯后產(chǎn)生匯編代碼然后在LINK
所有的CPU只認(rèn)識匯編,在操作系統(tǒng)中90%的API沒有對應(yīng)的匯編代碼。
?
1.obj:匯編代碼,無法執(zhí)行,不符合OS要求
2.Link:生成OS認(rèn)識的對應(yīng)格式的文件,這屬于深加工
?
可以像下面的例子
源代碼=生豬
編譯=把生豬宰殺變成豬肉
Link=加油鹽醬醋青椒最后變成青椒炒肉
?
如windows下Link要加PE結(jié)構(gòu)(逆向、加殼要使了解)
?
在編程中有兩個(gè)版本一個(gè)是Debug一個(gè)是Release
Debug和Release生成的代碼不一樣,因?yàn)橛玫木幾g優(yōu)化不能
我們現(xiàn)在來演示!!!
代碼如下:
int main() {return 0; }分別在Debug和Release下編譯鏈接
我們打開文件夾,看看他們的文件大小
左邊的為Debug程序,右邊為Release程序。可以發(fā)現(xiàn)Release的代碼是經(jīng)過優(yōu)化的,他生成的文件比Debug的小。
下面我們把他轉(zhuǎn)到反匯編,就更加清楚明白了!
現(xiàn)在先展示Debug下的:
下面是Release版本下的
由此可以看見Release是經(jīng)過優(yōu)化后的代碼,在一般編程的時(shí)候,我們要用Debug方式來調(diào)試?
總結(jié)
以上是生活随笔為你收集整理的汇编和可执行文件(Debug和Release)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python复制代码会被发现吗,我发现了
- 下一篇: 取值方法_数据维度爆炸怎么办?详解 5