Closed ytoi closed 4 years ago
stxで負の値を扱った場合に正しく符号拡張されずにレジスタに入る。
stx r10
で実行した際のログは以下のように出る。 0x16a8: SXH r10(-1):65535
0x16a8: SXH r10(-1):65535
本来符号拡張されているので、後ろの値は2^16-1ではなく、2^32-1にならないといけない。
変数宣言しているtmpがuint16で定義されていて、その値で書き戻していたのが間違い。 同様の不具合がsxbにもあったので、それも修正。
65535を入れてprint分を入れてもマイナス表示ならなかったことからopコード側を調査。
stxで負の値を扱った場合に正しく符号拡張されずにレジスタに入る。
stx r10
で実行した際のログは以下のように出る。
0x16a8: SXH r10(-1):65535
本来符号拡張されているので、後ろの値は2^16-1ではなく、2^32-1にならないといけない。
変数宣言しているtmpがuint16で定義されていて、その値で書き戻していたのが間違い。 同様の不具合がsxbにもあったので、それも修正。