前言
這里,我們打算對(duì)虛幻4 中藍(lán)圖虛擬機(jī)的實(shí)現(xiàn)做一個(gè)大概的講解,如果對(duì)其它的腳本語(yǔ)言的實(shí)現(xiàn)有比較清楚的認(rèn)識(shí),理解起來會(huì)容易很多,我們先會(huì)對(duì)相關(guān)術(shù)語(yǔ)進(jìn)行一個(gè)簡(jiǎn)單的介紹,然后會(huì)對(duì)藍(lán)圖虛擬機(jī)的實(shí)現(xiàn)做一個(gè)講解。
術(shù)語(yǔ)
編程語(yǔ)言一般分為編譯語(yǔ)言和解釋型語(yǔ)言。
編譯型語(yǔ)言
程序在執(zhí)行之前需要一個(gè)專門的編譯過程,把程序編譯成 為機(jī)器語(yǔ)言的文件,運(yùn)行時(shí)不需要重新翻譯,直接使用編譯的結(jié)果就行了。程序執(zhí)行效率高,依賴編譯器,跨平臺(tái)性差些。如C、C++、Delphi等.
解釋性語(yǔ)言
編寫的程序不進(jìn)行預(yù)先編譯,以文本方式存儲(chǔ)程序代碼。在發(fā)布程序時(shí),看起來省了道編譯工序。但是,在運(yùn)行程序的時(shí)候,解釋性語(yǔ)言必須先解釋再運(yùn)行。
然而關(guān)于Java、C#等是否為解釋型語(yǔ)言存在爭(zhēng)議,因?yàn)樗鼈冎髁鞯膶?shí)現(xiàn)并不是直接解釋執(zhí)行的,而是也編譯成字節(jié)碼,然后再運(yùn)行在jvm等虛擬機(jī)上的。
UE4中藍(lán)圖的實(shí)現(xiàn)更像是lua的實(shí)現(xiàn)方式,它并不能獨(dú)立運(yùn)行,而是作為一種嵌入宿主語(yǔ)言的一種擴(kuò)展腳本,lua可以直接解釋執(zhí)行,也可以編譯成字節(jié)碼并保存到磁盤上,下次調(diào)用可以直接加載編譯好的字節(jié)碼執(zhí)行。
什么是虛擬機(jī)
虛擬機(jī)最初由波佩克[a]與戈德堡定義為有效的、獨(dú)立的真實(shí)機(jī)器的副本。當(dāng)前包括跟任何真實(shí)機(jī)器無關(guān)的虛擬機(jī)。虛擬機(jī)根據(jù)它們的運(yùn)用和與直接機(jī)器的相關(guān)性分為兩大類。系統(tǒng)虛擬機(jī)(如VirtualBox)提供一個(gè)可以運(yùn)行完整操作系統(tǒng)的完整系統(tǒng)平臺(tái)。相反的,程序虛擬機(jī)(如Java JVM)為運(yùn)行單個(gè)計(jì)算機(jī)程序設(shè)計(jì),這意謂它支持單個(gè)進(jìn)程。虛擬機(jī)的一個(gè)本質(zhì)特點(diǎn)是運(yùn)行在虛擬機(jī)上的軟件被局限在虛擬機(jī)提供的資源里——它不能超出虛擬世界。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26