2017-10-16 11 views
0

エンコードされたMIPS命令を保持する変数instがあるとします。他のフィールドを変更せずにrtフィールドを0に設定したい。 rtフィールドは、16-20から索引付けされた5ビットのフィールドです。私が最初に試した:0にRTフィールドを設定しますまたはマスクを使用したビット操作

inst = inst & ~(1 << 16); 

をそれから私は、RTフィールドに新しい変数new_regの値を載せていきたいと思います。私は試しました:

inst = inst | (new_reg << 16); 

この2行のコードが正しいかどうかは誰にも確認できますか?

答えて

1

私はあなたの最初のビットマスクに問題があると信じています。コマンド(1 < < 16)は、16-20のすべてのビットをマスクする最初のビットのみをマスクします。試してみてください。そして、

inst = inst & ~(0x3f << 16) 

inst = inst | (new_reg << 16); 
関連する問題