オペランド再考

 オペランドについて考え直した。現行ではオペランドとオペコードを区別するMSB、即値とレジスタ指定を区別するビットを使い残り6bitで数値をあらわしていたがもうちょっと工夫する。

 オペランド MSB=1 とする。オペコードはMSB=0で区別できる。

type N: オペランドなし
現オペコード|次オペコード

type S: ショート即値(7bit) -64~+63
現オペコード|1sssssss|次オペコード

type L: ロング即値 7bit単位可変長
現オペコード|10000000|{1LLLLLLL}+|次オペコード

type R: レジスタ指定
現オペコード|10000001|1RRRRRRR|次オペコード

type RS: レジスタ&ショート即値指定
現オペコード|10000001|1RRRRRRR|1sssssss|次オペコード

type RL: レジスタ&ロング即値指定
現オペコード|10000001|1RRRRRRR|10000000|{1LLLLLLL}+|次オペコード

type RN: レジスタ指定&Null
現オペコード|10000010|1RRRRRRR|次オペコード

type RR: 2レジスタ指定
現オペコード|10000010|1RRRRRRR|1RRRRRRR|次オペコード

type RRS: 2レジスタ&ショート即値指定
現オペコード|10000010|1RRRRRRR|1RRRRRRR|1sssssss|次オペコード

type RRL: 2レジスタ&ロング即値指定
現オペコード|10000010|1RRRRRRR|1RRRRRRR|10000000|{1LLLLLLL}+|次オペコード

2バイト以上のオペランドでこのフォーマットを満たさないものはInvalid。

これにより即値の範囲は7bitに、レジスタ指定も同様に0~127が指定可能となった。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント