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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

c java 系统开发_java开发系统内核:使用C语言开发系统应用程序

發(fā)布時間:2023/12/2 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c java 系统开发_java开发系统内核:使用C语言开发系统应用程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

更詳細的講解和代碼調試演示過程,請參看視頻

用java開發(fā)C語言編譯器

如果你對機器學習感興趣,請參看一下鏈接:

機器學習:神經網絡導論

我們的操作系統(tǒng)通過增添內核接口導出機制后,已經可以作為平臺,運行應用程序了,但目前應用程序的開發(fā)有一個不足就是,我們只能使用匯編語言開發(fā)應用程序,用匯編語言開發(fā)程序實在太累了,如果能使用C語言就好了,例如當我們想要開發(fā)一個在控制臺上輸出一個字符的應用程序,如果代碼能用C語言這么寫就好了(app.c):

void api_putchar(int c);

void main() {

api_putchar('C');

return;

}

如果上面的代碼能編譯成二進制文件,并能通過系統(tǒng)加載執(zhí)行,那么在我們的操作系統(tǒng)上開發(fā)應用程序就不必要像以前那么痛苦。我們這一節(jié)要做的是,研究如何使用C語言開發(fā)運行在我們系統(tǒng)之上的應用程序。

實際上,我們用C語言開發(fā)內核的步驟,可以平移到開發(fā)應用程序上。我們開發(fā)內核時,實際上遵循著的基本邏輯是這樣的:用匯編開發(fā)底層接口,然后用C語言調用匯編語言導出的接口,實現業(yè)務邏輯。然后把C代碼編譯成二進制文件,接著使用objconv 工具把C語言反編譯成匯編語言,下一步就是把原來的用匯編開發(fā)的代碼跟反編譯后得到的匯編代碼合二為一,最后用匯編編譯器把整合起來的匯編代碼編譯成一個統(tǒng)一的二進制可執(zhí)行文件。

我們用C語言開發(fā)應用程序也遵循上面的邏輯。首先我們用匯編語言導出內核API接口,用C語言調用匯編語言導出的接口完成業(yè)務邏輯的編寫,接著把C語言代碼編譯成二進制,再使用objconv反匯編,最后把兩個匯編語言代碼合二為一,統(tǒng)一編譯成一個可執(zhí)行的二進制文件。

基于上面的邏輯步驟,我們第一步要做的就是用匯編語言導出api_putchar函數調用的接口,實現代碼如下(api_call.asm):

[SECTION .s32]

BITS 32

call main

retf

api_putchar:

mov edx, 1

mov al, [esp + 4]

int 02Dh

ret

%include "app.asm"

我們先看api_putchar部分,前面我們講過,內核所有api都對應一個編號,向控制臺輸出一個字符的api編號就是1,要調用對應api時,只要把對應編號放入寄存器edx, 同時把參數提交給指定寄存器,最后調用2D號中斷就可以了。

在代碼的前面,我們首先執(zhí)行語句call main, 也就直接調用main函數,這意味著用C語言開發(fā)程序時,主入口函數必須是main, 所有C語言開發(fā)的程序代碼編譯成二進制文件后,然后反匯編成匯編程序,反匯編后的程序文件就是app.asm,通過include指令把app.asm的代碼整合到api_call.asm中來,最后使用匯編編譯器nasm 編譯 api_call.asm 所得到的二進制文件就是用C語言開發(fā)的應用程序。

因此我們通過以下步驟就可以使用C語言來開發(fā)應用程序了:

1, 完成api_call.asm 在里面導出C語言程序所需要使用的接口

2, 使用C語言,通過接口調用完成業(yè)務邏輯的開發(fā),例如完成前面所述的app.c

3, 使用命令gcc -m32 -fno-asynchronous-unwind-tables -s -c -o app.o app.c 來編譯C語言代碼,

4, 使用objconv 反匯編步驟3所得到的二進制文件, ./objconv -fnasm app.o app_u.asm

5,使用我們早先開發(fā)的java工具對反匯編得到的app_u.asm進行預處理,去掉app_u.asm 里面一些無用的指令

6,使用nasm編譯api_call.asm , nasm -o hlt.bat api_call.asm 得到二進制可執(zhí)行文件hlt.bat

7, 把hlt.bat的二進制數據加載到系統(tǒng)中執(zhí)行便是執(zhí)行了用C語言開發(fā)的應用程序。

具體的操作步驟請參看視頻,上面的步驟是一系列步驟精簡后的過程,更詳實的講解和代碼運行調試過程,請參看視頻。

經過上述步驟后,把得到的二進制文件加載到系統(tǒng)進行執(zhí)行后,所得結果如下:

這里寫圖片描述

可見運行hlt命令后,C語言開發(fā)的程序邏輯被執(zhí)行,字符C正確的顯示到了控制臺窗口里,由此可見,經過上述步驟,我們是可以使用C語言在我們的系統(tǒng)內核基礎上開發(fā)應用程序的。

更詳細的講解還請參看視頻。

更多技術信息,包括操作系統(tǒng),編譯器,面試算法,機器學習,人工智能,請關照我的公眾號:

這里寫圖片描述

總結

以上是生活随笔為你收集整理的c java 系统开发_java开发系统内核:使用C语言开发系统应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。

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