我一直在嘗試格式化Motorola 68000的二進制操作碼,但我一直髮現無法對目標存儲器地址,指令指定和尋址模式/大小進行編碼,並將數據值複製到內存映射I/O的地址總線。無法在機器指令中編碼32位二進制操作碼
對於Sega Genesis的視頻顯示處理器,我試圖寫入存儲器映射到Genesis存儲器映射中C00004的控制端口。
C0004是1100 0000 0000 0000 0000 0100二進制或三個字節。我正在寫的值是87,VDP在VDP寄存器#7中識別爲8787。我遇到的問題是如何編碼32位的數據,例如指令前綴指定move.b
,值87,其爲#$87
,以及用於MMIO的目的地存儲器地址C00004
在到VDP的路上重新路由到正確的VDP端口。
總之它看起來像這樣:
move.b #$87, $00C00004,
鬆散地轉化爲不是四個,但四個字節和四位(36位是精確的!)
0001 1000 0111 1100 0000 0000 0000 0000 0100
由於摩托羅拉68000只在解析到microcode時解析32位數據,如果沒有足夠的空間(並且在相同的指令中),如何編碼所需的信息薦)?
Perhaps I'm understanding this incorrectly?
我知道這是超越同級別大多數程序員會預料,但我周圍希望有人能打破這對我和解釋這個編碼方案將如何工作。