1.指令結構
CairoCPU原生支持的word是一個域元素,而這個域是特征值大于P>2^63。每個指令會占用1到2個word,如果指令后面跟著立即值(="12345678")則該指令占用2個word,并且值存在第二個word里。每個指令的第一個word由以下元素組成:
2.狀態轉換
狀態轉換函數代表了一個通用的狀態轉換單元,而一個計算通常會分解成多個連續執行的指令,因此我們需要:
a.確保指令的內容,以及指令執行前后的狀態的有效性
b.確保執行的指令是一個有效的指令
2.1轉換邏輯
如果指令執行前后的狀態是一致的,那么其狀態的更新一定是按照以下邏輯執行:
美股三大指數集體低開 英特爾跌約10%:1月27日消息,美股開盤,道指跌0.03%,納指跌0.36%,標普500指數跌0.25%。英特爾開跌約10%,公司2022年Q4營收同比降32%并創2016年以來最低營收,2023年Q1指引大幅低于市場預期。雪佛龍跌2.54%,2022年Q4凈利潤63.53億美元,調整后每股盈利4.09美元,但均不及市場預期。[2023/1/28 11:32:53]
2.2指令校驗
如圖1所示,?個指令由以下元素組成:
Bankless 即將推出 3000 萬美元早期 Web3 基金:12月6日消息,去中心化協作組織 Bankless 相關社交賬號表示,Bankless 即將推出 3000萬美元早期 Web3 基金,旨在激勵從業者建設 Web 3 行業。[2022/12/7 21:26:59]
3.指令示例
3.1斷言相等
斷言相等指令可以用下述語法表示:
<left_handle_op>=<right_handle_op>
它確保了公式兩邊是相等的,否則程序的執行將會被返回。
Note2:除法和減法可以分別表示為具有不同操作數順序的乘法和加法。
assert指令可以被認為是一條賦值指令,其中?邊是已知的,另一邊是未知的。例如=4可以被認為是斷言的值為4,或者根據上下文將賦值為4。
超半數礦企股票收漲,Cipher、TeraWulf和Argo Blockchain漲幅均超14%:12月3日消息,數據顯示,在The Block追蹤的23只比特幣礦業股票中,有13只昨日收漲。漲幅榜前三的股票分別是:Cipher Mining(+14.65)、TeraWulf(+14.46)和Argo Blockchain UK(+14.29),跌幅最高的是Mawson Infrastructure Group(-7.21%)。[2022/12/3 21:19:54]
圖4給出了斷言相等指令的一些示例,以及每個指令對應的標志值:
解釋指令=5:
?為assert指令=>opcode=4
?next_ap=ap=>ap_update=00=0
?next_pc=pc+instruction_size=>pc_update=000=0
?op0和op1沒有addormul=>res_logic(res)=00=0
?存在立即數=>op1_src(op1)=001=1
BSV比特幣協會啟動其區塊鏈創新計劃:金色財經報道,BSV比特幣協會啟動其區塊鏈創新計劃,這是一個為期 10 周的課程,旨在鼓勵人們成為比特幣開發者。 BSV 學院正在向任何有興趣將其納入其教育工具集的合作伙伴提供此區塊鏈創新計劃。其中一個合作伙伴是烏干達的風險投資公司 CapitalSavvy ,它正試圖為當地開發商帶來就業機會。(prnewswire)[2022/9/21 7:09:54]
?立即數地址指令地址相鄰=>off_op1=1
?等式左邊=>dst_reg(dst)=1
?等式左邊=>off_dst=1
?op0_reg/off_op0=>initalvalue(1/-1)//因為這個指令用不到這些flags,所以填充默認值
3.2條件和非條件跳轉
jmp指令允許更改程序計數器pc的值。
Cairo支持相對跳轉和絕對跳轉-分別用關鍵字rel和abs表示;jmp指令或許是有條件的,比如當某個內存單元的值不為0時,觸發jmp指令。
指令的語法如下所示:
#Unconditionaljumps.
jmpabs<adress>
加密交易所AEX因短期流動性問題關閉提幣功能:7月14日消息,加密交易所AEX在社群中表示,因為平臺短期流動性問題暫未完全解決,AEX短期內無力兌付大家的提幣需要,所以平臺已經關閉了提幣功能,并預計在其具備足夠短期兌付能力之后會再次開放。
此外,AEX稱:“此次危機僅僅只是短期流動性資金不足以完全兌付,我們的長期資金完全沒有任何問題,足以輕松覆蓋全部用戶資產。所以,我們不僅不會跑路,而且會正常運營平臺現有業務,并且不會停止一切正在對外的服務。[2022/7/14 2:13:12]
jmprel<offset>
#Conditionaljumps.
jmprel<offset>if<op>!
圖5給出了jmp指令的一些示例,以及每個指令對應的標志值:
解釋指令jmprel+:
?為jmp指令=>opcode=0
?next_ap=ap=>ap_update=b00=0
?next_pc=pc+res=>pc_update=b010=2
?res=op0+op1=>res_logic(res)=b01=1
?op1:=>op1_src(op1)=b010=2
?op1:=>off_op1=-7
?op0:=>op0_src(op0)=0
?op0:=>off_op0=1
?dst_reg/off_dst=>initalvalue(1/-1)///因為這個指令用不到這些flags,所以填充默認值
3.3call和ret
call和ret指令允許實現函數堆棧。call指令更新程序計數器(pc)和幀指針(fp)寄存器。程序計數器的更新類似于jmp指令。之前fp的值被寫入,以允許ret指令將fp的值重置為調用之前的值;類似地,返回的pc(調用指令后面指令的地址)被寫到,以允許ret指令跳回并繼續執行調用指令后面的代碼的執行。由于寫入了兩個存儲單元,ap向前進了2,fp被設置為新的ap。
指令的語法如下:
callret<adress>
callrel<offset>
ret
圖6給出了call和ret指令的一些示例,以及每個指令對應的標志值:
解釋指令callabs:
?為call指令=>opcode=0
?next_ap=ap=>ap_update=b00=0
?next_pc=res=>pc_update=b001=1
?res=op1=>res_logic(res)=b00=0
?op1:=>op1_src(op1)=b010=2
?op1:=>off_op1=4
?op0_reg/off_op0=>initalvalue(0/1)///因為這個指令用不到這些flags,所以填充默認值
?dst_reg/off_dst=>initalvalue(0/0)///因為這個指令用不到這些flags,所以填充默認值
3.4高級ap
指令ap+=<op>通過給定的操作數增加ap的值。
圖7給出了高級ap指令的一些示,以及每個指令對應的標志:
解釋指令ap+=123:
?為advancingap指令=>opcode=0
?next_ap=ap+res=>ap_update=b01=1
?next_pc=pc+instruction_size=>pc_update=b000=0
?res=op1=>res_logic(res)=b00=0
?op1=123=>op1_src(op1)=b001=1
?op1=123=>off_op1=1
?op0_reg/off_op0=>initalvalue(1/-1)///因為這個指令用不到這些flags,所以填充默認值
?dst_reg/off_dst=>initalvalue(1/-1)///因為這個指令用不到這些flags,所以填充默認值
關于我們
Sin7y成立于2021年,由頂尖的區塊鏈開發者組成。我們既是項目孵化器也是區塊鏈技術研究團隊,探索EVM、Layer2、跨鏈、隱私計算、自主支付解決方案等最重要和最前沿的技術。
微信公眾號:Sin7Y
GitHub|Twitter|Telegram|Medium|Mirror|HackMD|HackerNoon
Tags:RESOFFDSTDATRESET幣Kols Offering TokenSDSTData Transaction Token
最新數據顯示,JustLend存款規模突破33億美金,24小時累計存款量突破1.49億美金。其中,存款規模TOP3分別是BTC、USDC、USDD.
1900/1/1 0:00:00Bitfinex行動應用程序推出LNURL支付功能6月17日消息,據Bitfinex發推稱,我們正在幫助全球各地的人們通過LNURL支付獲得財務自由.
1900/1/1 0:00:007月26日,據區塊鏈瀏覽器TRONSCAN數據,波場TRON交易總數達到3,601,928,192,正式突破36億.
1900/1/1 0:00:008月11日,據區塊鏈瀏覽器TRONSCAN數據,波場TRON總質押量為11,730,484,279美元,突破117億美元.
1900/1/1 0:00:00最新數據顯示,JustLend平臺TRX存款規模突破6100萬美元。 太陽幣SUN.io平臺JustLend礦池專區第四輪挖礦已經開始:據官方最新消息,太陽幣SUN.io平臺JustLend礦池.
1900/1/1 0:00:00原文作者:KevinSchwartzandDavidAdlerstein原文標題:DecentralizedGovernanceandtheLessonsofCorporateGovernanc.
1900/1/1 0:00:00