Solidity語言學習筆記————17、原始檔對映
原始檔對映(Source Mappings)
作為AST輸出的一部分,編譯器會提供AST某個節點以應的原始碼的範圍。這可以被用來做基於AST的靜態程式碼錯誤分析,可以高亮本地變數,和他們對應使用的除錯工具。
此外,編譯器也可以生成位元組碼到生成指令原始碼的範圍對映。這對靜態分析工具來說非常重要,它們在位元組碼級別分析,可以來在除錯工具內顯示對應程式碼位置,或支援斷點操作。
這兩種源對映都使用整數識別符號來引用原始檔。這些是常規陣列索引,它們通常被稱為“sourceList
”的原始檔列表,它是 combined-json和json / npm編譯輸出的一部分。
註解 |
---|
在與任何特定原始檔不相關的指令的情況下,源對映分配-1 的整數識別符號。這可能發生於編譯器生成的內聯彙編語句中的位元組碼部分。 |
對映的源內的AST使用以下符號:
s:l:f
其中,s
是原始檔中範圍開始的位元組偏移量,l
是源範圍的位元組長度,f
是上面提到的源索引。
位元組碼的源對映中的編碼更為複雜:它是由;
分隔的s:l:f
的列表。這些元素中的每一個都對應於指令,即不能使用位元組偏移,但必須使用指令偏移(推送指令比單個位元組長)。欄位s
、l
和f
與上面一樣,j
可以是i
、o
或-
表示jump 指令是否進入函式、從函式返回或是作為迴圈的一部分的常規跳轉。
為了壓縮這些源對映,特別是對於位元組碼,使用以下規則:
- 如果欄位為空,則使用前一個元素的值。
- 如果缺少
:
,則所有以下欄位都被認為是空的。
這意味著以下源對映表示相同的資訊:
1:2:1;1:9:1;2:1:2;2:1:2;2:1:2
1:2:1;:9;2:1:2;;
相關文章
- Solidity語言學習筆記————16、對映MappingSolid筆記APP
- Solidity語言學習筆記————1、初識Solidity語言Solid筆記
- Solidity語言學習筆記————38、Solidity彙編Solid筆記
- Solidity語言學習筆記————36、 庫Solid筆記
- Solidity語言學習筆記————37、Using forSolid筆記
- Solidity語言學習筆記————4、常量Solid筆記
- Solidity語言學習筆記————33、事件(Events)Solid筆記事件
- Solidity語言學習筆記————12、陣列Solid筆記陣列
- Solidity語言學習筆記————34、繼承Solid筆記繼承
- Solidity語言學習筆記————43、安全考量Solid筆記
- Solidity語言學習筆記————42、提示和技巧Solid筆記
- Solidity語言學習筆記————28、純函式Solid筆記函式
- Solidity語言學習筆記————26、回退函式Solid筆記函式
- Solidity語言學習筆記————32、建立合約Solid筆記
- Solidity語言學習筆記————41、記憶體佈局Solid筆記記憶體
- Solidity語言學習筆記————39、獨立彙編Solid筆記
- Solidity語言學習筆記————25、作用域和宣告Solid筆記
- Solidity語言學習筆記————27、檢視函式Solid筆記函式
- Solidity語言學習筆記————10、布林型、整型Solid筆記
- Solidity語言學習筆記————3、Remix的基本使用Solid筆記REM
- Solidity語言學習筆記————15、結構體StructSolid筆記結構體Struct
- Solidity語言學習筆記————18、字串和函式Solid筆記字串函式
- Solidity語言學習筆記————14、左值運算子Solid筆記
- Solidity語言學習筆記————9、左值運算子Solid筆記
- Solidity語言學習筆記————5、全域性變數Solid筆記變數
- Solidity語言學習筆記————2、使用編譯器Solid筆記編譯
- Solidity語言學習筆記————30、函式過載Solid筆記函式
- Solidity語言學習筆記————35、抽象合約和介面Solid筆記抽象
- Solidity語言學習筆記————26、Assert, Require, Revert 和 ExceptionsSolid筆記UIException
- Solidity語言學習筆記————22、可見性和GettersSolid筆記
- Solidity語言學習筆記————20、函式修飾符Solid筆記函式
- Solidity語言學習筆記————31、智慧合約的基本檔案結構概述Solid筆記
- Solidity語言學習筆記————23、函式呼叫和賦值Solid筆記函式賦值
- Solidity語言學習筆記————24、輸入輸出引數Solid筆記
- Solidity語言學習筆記————13、固定大小位元組陣列Solid筆記陣列
- Solidity語言學習筆記————14、動態位元組陣列Solid筆記陣列
- Solidity語言學習筆記————8、運算子優先順序Solid筆記
- Solidity語言學習筆記————44、合約的後設資料Solid筆記