以太坊虛擬機器介紹
以太坊虛擬機器介紹
近期打算寫一些關於以太坊虛擬機器(後面簡稱EVM)的文章,這是其中的第一篇。這一系列文章想站在EVM指令集的角度,帶領讀者逐步理解EVM工作原理,進而理解以太坊區塊鏈技術細節。由於網上介紹以太坊的文章也比較多,所以這一系列文章將最大程度減少不必要的廢話,直接提供文章想要表達的資訊。
EVM基本資訊
程式語言虛擬機器一般有兩種型別,基於棧,或者基於暫存器。大部分我們所熟知的語言都採用基於棧的虛擬機器,比如最著名的Java虛擬機器。在遊戲領域非常流行的Lua語言則採用了基於暫存器的虛擬機器。和JVM一樣,EVM也是基於棧的虛擬機器。
既然是支援棧的虛擬機器,那麼EVM肯定首先得有個棧。為了方便進行密碼學計算,EVM採用了32位元組(256位元)的字長。EVM棧以字(Word)為單位進行操作,最多可以容納1024個字。這就是我們在這篇文章裡需要了解的EVM資訊,在後面的文章裡,我們會逐步介紹更多的EVM細節。下面是EVM棧的示意圖:
EVM指令集
和JVM一樣,EVM執行的也是位元組碼。由於操作碼被限制在一個位元組以內,所以EVM指令集最多隻能容納256條指令。目前EVM已經定義了約142條指令,還有100多條指令可供以後擴充套件。這142條指令包括算術運算指令,比較操作指令,按位運算指令,密碼學計算指令,棧、memory、storage操作指令,跳轉指令,區塊、智慧合約相關指令等。我們會在後面的文章裡逐步討論這些指令,下面是已經定義的EVM操作碼分佈圖(灰色區域是目前還沒有定義的操作碼):
其他文章
以太坊虛擬機器介紹2-棧操作指令
以太坊虛擬機器介紹3-算術運算指令
以太坊虛擬機器介紹4-位移運算指令
以太坊虛擬機器介紹5-比較操作指令
以太坊虛擬機器介紹6-密碼學運算指令
以太坊虛擬機器介紹7-儲存操作指令
…
廣告
如果大家對程式語言虛擬機器有更多的興趣,請關注我寫的《自己動手寫Java虛擬機器》,以及馬上將要出版的《自己動手實現Lua:虛擬機器、編譯器、標準庫》。
相關文章
- 【以太坊剖析】以太坊虛擬機器(EVM)之基本定義虛擬機
- Python 如何實現以太坊虛擬機器Python虛擬機
- 分享Python以太坊虛擬機器實現Py-EVMPython虛擬機
- 虛擬機器之介紹_2.0虛擬機
- 從比特幣指令碼引擎到以太坊虛擬機器(下篇)比特幣指令碼虛擬機
- 從比特幣指令碼引擎到以太坊虛擬機器(上篇)比特幣指令碼虛擬機
- 智慧合約開發(3)—— 以太坊虛擬機器(EVM)基礎虛擬機
- 虛擬機器之linux介紹和命令虛擬機Linux
- 以太坊的擴容方案介紹
- 以太坊Solidity型別介紹+實戰Solid型別
- 寫給開發者——從比特幣指令碼引擎到以太坊虛擬機器比特幣指令碼虛擬機
- 以太坊原始碼分析(53)以太坊測試網路Clique_PoA介紹原始碼
- 以太坊學習筆記————6、以太坊客戶端選擇與介紹筆記客戶端
- 以太坊簡介
- 以太坊學習筆記————10、錢包、以太幣、Gas介紹筆記
- 以太坊:Dapp及相關開發工具介紹APP
- 以太坊開發框架Truffle基礎使用介紹框架
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- Python虛擬環境介紹Python
- 以太坊原始碼分析(2)go ethereum 目錄大概介紹原始碼Go
- java虛擬機器和Dalvik虛擬機器Java虛擬機
- Android 虛擬機器 Vs Java 虛擬機器Android虛擬機Java
- Java虛擬機器詳解(一)------簡介Java虛擬機
- 區塊鏈2.0架構:以太坊區塊鏈的介紹區塊鏈架構
- 介紹一個 GitHub 上的 Laravel 以太坊包 Laravel-ethereumGithubLaravel
- 虛擬機器管理器(Virtual Machine Manager)簡介虛擬機Mac
- 虛擬機器(三)虛擬機器配置靜態Ip虛擬機
- 以太坊原始碼分析(54)以太坊隨機數生成方式原始碼隨機
- 簡單介紹apache虛擬主機配置的三種方式Apache
- PD虛擬機器 18 for Mac(Mac虛擬機器軟體)虛擬機Mac
- JVM 虛擬機器JVM虛擬機
- JVM虛擬機器JVM虛擬機
- Neo 虛擬機器虛擬機
- VMware虛擬機器虛擬機
- 虛擬機器arm虛擬環境搭建虛擬機
- xshell能ping通虛擬機器,不能連線虛擬機器虛擬機
- 虛擬機器軟體Parallels Desktop 19 for Mac虛擬機器 19.0.0虛擬機ParallelMac
- 簡介 以太坊 2.0 核心 之 共識機制的改變