我正在編寫自己的字節碼和虛擬機(在.NET上),我無法弄清楚的一件事是如何將字符串嵌入到字節碼中。任何想法現在我應該怎麼做?如何將字符串嵌入到二進制文件中?
回答
顯然你正在定義你自己的字節碼。這與.NET CIL的語法/語法無關,對吧?
如果是這樣,並且您關心的是如何對字符串進行編碼(而不是其他指令,如跳轉,循環等),那麼您可以爲它創建自己的「指令」。
例如,十六進制代碼「01xx」可以用於包含xx個字節(0 -255)的字符串。然後,您的語言解釋器將被教導將該字符串存儲在堆棧(或無論哪個)上,並移動以解碼位於字節碼流下方xx字節的以下字節碼。
如果你關心的是如何在你對字節碼的任何存儲混合字符數據和數字數據,請提供具體細節,也許有人可以幫助...
正確,我正在做我自己的。 我有點得到你說的,但ieach指令在我的字節碼中包含4個獨立的字節(操作碼和其他3個字符,其用途因指令而異),我想避免變長說明。它可以安全地通過在指令本身中編碼數據的長度來實現,但它會使它更復雜... – RCIX 2009-09-19 05:39:18
我看到了具有固定長度和格式的字節碼的優點。在這種情況下,字符串可能只是作爲變量聲明(您可能很容易設計)的指令來實現的,其中存儲實際字符串的索引(即地址,偏移量,下標...)。與常規變量的不同之處在於,字符串所在的存儲區使用字符串值進行初始化。事實上,對於3字節的指令,你可能會發現自己受限於其他類型而不僅僅是字符串(比如說如何編碼一個大於8百萬的數字值? – mjv 2009-09-19 05:51:35
這是另一件我有點困惑的事情......但我可能只是繼續做,謝謝! – RCIX 2009-09-21 05:47:15
如果你可以在一個陣列存儲號碼,然後您可以將ASCII數據存儲在同一個陣列中。忽略字符串作爲類的想法,簡單的字符串無論如何只是一個字符數組 - 而在C中,值爲0的字節表示字符串的結尾。
舉一個簡單的驗證的概念在C:
int main()
{
putchar(104); // h
putchar(101); // e
putchar(108); // l
putchar(108); // l
putchar(111); // o
putchar(10); // \n
return 0;
}
輸出:
$ ./a.out hello
這不是那麼簡單,我試圖嵌入字符串與其他字節(這正好是我自己的自定義格式的說明),我不知道如何做到這一點。 – RCIX 2009-09-19 05:52:58
- 1. 如何使用Python3將二進制文件寫入字符串?
- 2. 字符串到二進制文件
- 3. 從字符串到二進制文件
- 4. 在Lua中將字符串寫入二進制文件
- 5. 將二進制字符串轉換爲二進制文字
- 6. 如何將字符串作爲二進制文件寫入文件?
- 7. 字符串到二進制[]
- 8. 如何將二進制文件的內容讀入Clojure中的字符串?
- 9. 如何將二進制文件內容讀取爲字符串?
- 10. Swift 3將字符串寫入二進制文件
- 11. Python將字符串「1001101」作爲二進制流寫入文件
- 12. 將二進制字符串寫入文件
- 13. Cython將二進制文件讀入字符串並返回
- 14. 將包含字符串的結構寫入二進制文件
- 15. 將字符串寫入二進制文件C++
- 16. 字符串寫入到二進制文件用C
- 17. 將二進制數據(例如二進制文件)導出爲.NET字符串?
- 18. 二進制文件字符串
- 19. Postgres mogrify將二進制文件添加到SQL字符串
- 20. 從字符串中輸入DynamoDB中的二進制文件
- 21. Python讀取二進制文件中的二進制數據到字符串?
- 22. 如何將二進制數據複製到字符串流
- 23. 寫的字符串二進制數據的二進制文件
- 24. 將二進制視頻數據嵌入到swf文件中
- 25. 字符串輸入到二進制字符串的方法?
- 26. 將文件和字符串編碼爲二進制文件C#
- 27. 十六進制字符串到二進制字符串
- 28. 二進制字符串到十六進制字符串java
- 29. Ruby:十六進制字符串到二進制字符串
- 30. 如何設置二進制文件中的字符串指針?
它在Java中稱爲字節碼。在.NET中,它是CIL,所以我更新了你的標籤。你有沒有諮詢CIL參考? – 2009-09-19 05:11:17
不,我在.net平臺上編寫一個程序,該程序將字節數組解釋爲我自己的字節碼自定義風格。 – RCIX 2009-09-19 05:12:41
我想不出的是如何將數字以外的任何東西嵌入到數組中。 – RCIX 2009-09-19 05:14:19