私は命令のデコードに挑戦しています.今のところ、80x86 16ビットマシンでは、ソースオペランドとして即値を持たない命令のデコードに多くの問題はありません.ソースオペランドがレジスタまたは位置メモリですが、即値です。次の命令は、次のようにデコードします。
mov ax, 3
101110|11| |11|000|000| 00000011 -> 3 with sign expansion
| | | register AX
s = 1 | null
w = 1 |
the second operand is a register
代わりに、それは公平ではありません。これは正しいデコードです:
mov ax, 3
10111000 00000011 0000000
ソースオペランドが即値であると仮定して、デコードがどのように機能するかを誰かに説明してもらえますか?