计算机系统要素--第六章,02-HACK汇编编译器实现
生活随笔
收集整理的這篇文章主要介紹了
计算机系统要素--第六章,02-HACK汇编编译器实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
從零開始構建現代計算機--第六章,02-HACK匯編編譯器實現
- 要點
- A-指令
- C-指令
- 符號表
- python實現
要點
關心三點:
A指令,C指令,符號表
A-指令
A指令:將@num的num轉為16位的二進制數即可
C-指令
C指令:分成四部分,固定的開頭"111"(C指令標志),comp域(執行什么運算),dest域(計算結果的輸出位置),jump域(是否跳轉)
符號表
符號表保存的有編譯器預定義的符號,以及匯編代碼中自定義的標簽和變量的地址
預定義符號:符號表初始化就添加
自定義標簽和變量
標簽的entry在第一趟添加到符號表中
變量的entry在第二趟添加到符號表中,變量定義就是在符號表中建立一個entry,這就是為什么變量的定義要先于它的使用
標簽涉及控制流程,用來進行地址跳轉, 是A指令,
標簽定義如(LOOP),用法是@LOOP
第一趟遇到(LOOP)要將標簽加入符號表中,加的entry是下一條指令的位置,
第二趟忽略(LOOP),遇到@LOOP時取出entry,轉為二進制數即是A指令的匯編代碼
python實現
可以參考github上一個哥們的python代碼
這份代碼不是可重定位的,因為變量分配的起始地址固定為了16
總結
以上是生活随笔為你收集整理的计算机系统要素--第六章,02-HACK汇编编译器实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【man】getsockopt 和 se
- 下一篇: 2020年10月30日提高组 B 超级蚯