- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.2与机器相关的组译程式特性.ppt
本節介紹支援SIC/XE機器架構的組譯程式設計。
SIC/XE機器的組合語言範例程式及對應的目的碼請見 Figure 2.6(p. 58)。
此程式是將Figure 2.2的程式以SIC/XE機器的指令改寫而成。
此程式大量的使用 register-to-register 指令來替代原本的register-to-memory的指令。
將指令大量改寫為立即定址法的指令。;;在SIC/XE機器的組合語言程式中,「間接定址」指令是在運算元之前加一個「@」符號來表示。
70 J @RETADR
…
95 RETADR RESW 1;在SIC/XE機器的組合語言程式中,「立即定址」指令則前置一個「#」符號來表示。
12 LDB #LENGTH
25 COMP #0
55 LDA #3
133 +LDT #4096;一般來說,需要存取主記憶體(register-to-memory)的指令會被嘗試組譯成程式計數器相對定址或基底暫存器相對定址的方式(格式三的指令)。
當指令被組譯成基底暫存器相對定址,則必須搭配使用組譯程式指引:BASE。
若使用這兩種定址模式仍無法組譯成功,則指令必須被組譯成格式四(使用絕對位址)。;第2.2.1小節介紹為了支援SIC/XE機器上不同指令格式及定址模式,對組譯程式所造成的差異(相較於SIC標準版機器)。
第2.2.2小節介紹為了在SIC/XE機器上支援 multiprogramming,組譯程式所必須提供的額外功能(如何提供額外的資訊以支援載入重定位)。
SIC/XE的機器上有較大的可用記憶體空間。
當記憶體有空間時,我們需要能將之(從不同的位址)載入,而非載入至固定位址。;會被組譯成格式一的指令,例如: FIX(C416), FLOAT (C016), HIO(F416), TIO(F816)等指令。組譯程式查閱OPTAB後,即可以很容易地完成組譯。(範例程式未使用到此類指令)。
格式一:
;會被組譯成格式二的指令,都是屬於register-to-register的指令,例如: CLEAR(B416), COMPR(A016) 。
組譯程式查閱OPTAB及暫存器的代碼後,即可以很容易地完成組譯。
125 RDREC CLEAR X
130 CLEAR A
132 CLEAR S
150 COMPR A, S;各暫存器運算元的代碼可以在組譯前就預先載入SYMTAB或使用額外的表格來存放。
A(016), X(116), L(216), PC(816), SW (916), B(316), S(416), T(516), F(616)。
格式二:;若是register-to-memory 的指令,則以下列的順序(定址模式或指令格式)來嘗試是否可被組譯成功:
程式計數器相對定址模式 (PC)
基底暫存器相對定址模式 (B)
格式三:
;若嘗試程式計數器相對或基底暫存器相對定址模式都無法被組譯成功,則必須使用格式四。
格式四有20 bits的位址欄,可完全定址SIC/XE機器(可用主記憶體為1M bytes)當中任一個主記憶體空間。
使用格式四時,只需要在address欄填入運算元的絕對位址即可。;程式設計師必須自行判斷指令是否需要使用格式四,若需要,則必須自行在指令前加上 ‘+’符號。
若在指令前未加上 ‘+’符號,組譯器會試著以程式計數器相對或基底暫存器相對定址模式(格式三)來組譯。
若以格式三來組譯失敗,則此指令無法被正確組譯(組譯程式產生錯誤訊息)。;組譯成格式四的例子:
Line LOC Object code
15 0006 +JSUB RDREC 4B101036
………….
125 1036 REREC CLEAR X
註: JSUB = (48)16
格式四:
;若是register-to-memory 的指令,如何判斷是否可以使用程式計數器相對或基底暫存器相對模式來組譯?
先計算出偏差位址(disp)。
然後依據程式計數器相對或基底暫存器相對定址模式的disp有效範圍來決定。;使用程式計數器相對定址的例子(一):
Line LOC
文档评论(0)