當前位置:首頁 » 編程語言 » 啥c語言會反匯編成test指令
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

啥c語言會反匯編成test指令

發布時間: 2023-01-05 14:30:22

❶ 匯編中的TEST指令

test屬於邏輯運算指令,其功能為功能執行BIT與BIT之間的邏輯運算和測試功能(兩操作數作與運算,僅修改標志位,不回送結果)。

Test對兩個參數(目標,源)執行AND邏輯操作,並根據結果設置標志寄存器,結果本身不會保存。EST AX, BX與AND AX, BX命令有相同效果。TEST語法規格:TEST r/m,r/m/data。其影響標志包括:C,O,P,Z,S(其中C與O兩個標志會被設為0)。

test的運用舉例:利用Test指令測試一個位,例如寄存器:

test eax, 100b;/b後綴意為二進制/

jnz ******;/如果eax右數第三個位為1,jnz將會跳轉/

jnz跳轉的條件非0,即ZF=0,ZF=0意味著零標志沒被置位,即邏輯與結果為1。

(1)啥c語言會反匯編成test指令擴展閱讀

與匯編指令test功能相仿的還有cmp指令,CMP屬於算術運算指令,其功能為功能為比較兩個值(寄存器,內存,直接數值),與Test指令的測試功能相仿,其語法格式為CMP r/m,r/m/data,影響的標志位包括C,P,A,Z,O。

CMP比較.(兩操作數作減法,僅修改標志位,不回送結果)。cmp實際上是只設置標志不保存結構的減法,並設置Z-flag(零標志)。零標志很像carry,也是內部標志寄存器的一位。

❷ C語言源程序反匯編

對了,你用Keil C51來生成了.HEX文件後可以將其反匯編成匯編源程序

❸ C語言和匯編語言的關系

程序員編寫的C語言代碼,首先要經過C語言編譯器,生成匯編代碼,這個過程稱為編譯階斷,當C語言編譯器生成匯編代碼後,再調用匯編器來將匯編代碼編譯成匯編指令。

這是一種站在巨人肩人的作法,最早的C++編程語言也是這樣的實現方法,只不過那時候叫Cfront程序,Cfront程序的作用是將C++代碼轉換成C語言代碼,類似於一個文本處理器,然後再調用C語言編譯器,將C源碼編譯成匯編代碼,然後再調用匯編器將匯編代碼編譯成機器碼。

這個過程,在Windows平台上不容易操作,但是在Linux平台上很容易看到。以gcc這款c語言編譯器為例,它實際上是四個小程序。
cp: c語言預處理程序,有它負責進行預處理操作。
cc: C語言編譯器,它負責將C源碼編譯成匯編代碼。
as: 匯編器,它負責將匯編代碼編譯成機器碼,一般使用gcc test.c這樣的命令編譯C語言時,會生成一個a.out的程序,它實際上指的就是as ouput,即匯編器輸出文件。
link: 鏈接器,它負責將匯編器輸入的機器碼和庫打包成一個操作系統可以運行的可執行文件,在Linux上的可執行文件格式是ELF格式,這個格式的實現是有鏈接器來完成的。

❹ 怎樣將C語言語句轉換成匯編指 用什麼軟體或有沒有相關的書籍

如果 只是簡單的幾行,可以把編譯後的exe文件,用系統自帶的debug(windows鍵+R打開 運行窗口 輸入debug 空格 exe的路徑)打開debug後,輸入U可以看到幾行匯編代碼。
如果是源代碼 在vs編譯器中調試運行,菜單上的:調試--窗口--反匯編 可以查看,如果是其他編譯器 仔細找找也帶反匯編的
要資料的話 [天書夜讀-從匯編語言到Windows內核編程].譚文.邵堅磊. 這本書的基礎部分里 有c語言與匯編的轉換

❺ C語言寫的程序 怎麼反匯編成匯編語言

如果你手上沒有什麼第三方工知具的話,可以用DEBUG,
比如你用C寫了一個程序1.exe
生成的位置是d:\1.exe
打開電腦左下角開始--->運行--->輸入雙引號裡面道的"cmd"--->確定
彈出一個黑色窗體,在上面輸入輸入雙引號裡面的"debug
d:\1.exe"
然後回車
接著會出現一個"-"符號
然後輸入"u"
回車
就可回以看到相應的匯編了,這只是一個簡單的例子,有興趣可以學下DEBUG用法,要是大工程的話,還是建立答用別的工具,
注意:這只是在windows平台下用,像linux等別的平台不知道有沒有.

❻ C語言寫的程序 怎麼反匯編成匯編語言

在keilc中,單片機的C語言程序可以再DEBUG模式中得到對應的匯編程序。步驟如下:

1、建立工程,導入C文件代碼,編譯生成hex文件。

3、點擊View--Disassembly Window調出匯編窗口,如上圖。

通過以上步驟就可以看到與C對應的匯編程序了。

❼ 如何將C語言源碼文件反匯編成匯編語言源文件

源碼文件不行。只有編譯成可執行文件後才能反匯編。
我一般是用W32Dasm來進行反編譯

❽ 什麼軟體能將C語言的執行文件反匯編為匯編源代碼

可以使用Linux下的objmp命令來反匯編。
常用命令:
objmp -x obj:以某種分類信息的形式把目標文件的數據組成輸出;<可查到該文件的的所有動態庫>
objmp -t obj:輸出目標文件的符號表
objmp -h obj:輸出目標文件的所有段概括
objmp -j ./text/.data -S obj:輸出指定段的信息(反匯編源代碼)
objmp -S obj:輸出目標文件的符號表,當gcc -g時列印更明顯
objmp -j .text -Sl stack1 | more
-S 盡可能反匯編出源代碼,尤其當編譯的時候指定了-g這種調試參數時,效果比較明顯。隱含了-d參數。
-l 用文件名和行號標注相應的目標代碼,僅僅和-d、-D或者-r一起使用
使用-ld和使用-d的區別不是很大,在源碼級調試的時候有用,要求編譯時使用了-g之類的調試編譯選項。
-j name 僅僅顯示指定section的信息

❾ 編程反匯編C語言的問題...分不是問題

  1. 一般可以通過PEID等查一個未加殼程序的編程語言

  2. 當然也可以通過查殼工具判斷一些殼的種類

  3. 反匯編的工具有很多,OD是現在比較常用的,一般動態用OD,靜態用IDA,還有W32DASM、DEBUG、C32這些工具

  4. 當我們在C語言中聲明了一個char *ch指針,然後他會分配內存給字元串常量abcdef(它們有地方放著了),

之後才會把那個字元串的第一個字元a的地址賦值給指針變數ch。所以可以給它賦值
啦,這時ch就指向字元串的首地址,就可以在程序中用了。