[英]How to dump a word in Forth?
目的是在字典中創建一個Forth單詞,然后打印出該單詞的內存內容。 第一步很簡單。 : main
單詞的創建方式如教程中所述。 創建單詞后,字典指針移動到下一個位置,所以我必須從中減去一些項目,現在可以轉出創建單詞的內存區域:
\ create a dummy routine
: main 1 dup + . ;
\ put dictionary pointer to the stack
\ and subtract 50 indizies
dp 50 -
\ print out 20 cells to the screen from dp-50 until dp+50
\ but where is my newly created routine ": main"?
100 dump
bye
------
gforth "a.fs"
7F81DF443FC6: 00 00 20 17 12 AF 60 55 - 00 00 04 00 00 00 00 00 .. ...`U........
7F81DF443FD6: 00 00 A0 58 14 AF 60 55 - 00 00 10 00 00 00 00 00 ...X..`U........
7F81DF443FE6: 00 00 FF FF FF FF FF FF - FF FF 00 00 00 00 00 00 ................
7F81DF443FF6: 00 00 50 82 49 DF 81 7F - 00 00 F8 3F 44 DF 81 7F ..P.I......?D...
7F81DF444006: 00 00 08 82 49 DF 81 7F - 00 00 F0 81 49 DF 81 7F ....I.......I...
7F81DF444016: 00 00 32 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ..2.............
7F81DF444026: 00 00 00 00
不幸的是,dump命令顯示的內存區域沒有以: main
開頭的部分,而單詞1 dup ...
中的語句也缺失。 那么新創建的單詞到底在哪里? 如何查看內存中的原始字節?
1)有一個預定義的單詞, see
哪個應該做你想要的,並查看相應的來源應該給你一個提示。
2)您的方法僅適用於某種內存模型,即將名稱和代碼放入同一區域,這遠遠不能保證。 (我不確定,它是否適用於Gforth )。 從dup
, 1
, +
等,你什么都不會識別,因為它們被相應的地址或通話指令取代。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.