1

David A Patterson の本 Computer organization and design から Mips を勉強してみてください。第4版。
ただし、PC相対アドレスに関する質問の1つについては、混乱します。質問は次のとおりです。
現在のPCは0x00000600です。単一のバッチ命令を使用して、PCアドレスを次のように取得できますか

a) 1010 1101 0001 0000 0000 0000 0000 0010
b) 1111 1111 1111 1111 1111 1111 1111 1111

答えから、現在のPCの範囲は次のとおりです。

0X0604 + 0x1FFFC = 0x0002 06000x0604 - 0x20000 = 0xFFFE

0x1FFFC と 0X20000 を取得するにはどうすればよいですか?

助けてください、事前に感謝します。

4

1 に答える 1

3

MIPS アーキテクチャの分岐命令では、16 ビットの 2 の補数オフセットを指定できます。これを 2 ビット左にシフトして 18 ビットの PC オフセットを作成します (命令はバイト アラインされている必要があるため、最下位 2 ビットは常にゼロ) を計算し、PC に加算または減算します。

ここで、PC に追加できる最大 PC オフセット値を取得すると (最終的に 2 の補数を使用して PC に追加することになります)、シフトを考慮すると、00000000000000011111111111111100 または 0x1FFFC になります。

また、最大の PC オフセット値を取得すると、PC に減算できる (2 の補数を使用して PC に減算することになる) と見なされ、シフトは 00000000000000100000000000000000 または 0x20000 になります。

したがって、PC 値があり、ジャンプできるアドレスの範囲を知りたい場合は、それぞれ PC + 0x1FFFC と PC - 0x20000 である最大値と最小値を見つける必要があります。

何かわからないことがあれば遠慮なく質問してください。

于 2012-11-26T02:54:49.257 に答える