ビットワイズと(SPARCアセンブリ)を実行するときの再配置オーバーフロー?

StackOverflow https://stackoverflow.com/questions/3944791

質問

私は、最も重要なビットを削除するためのビットマスクとして、ビットワイズとレジスタで実行しようとしています(0からカウントするとビット16です)。ただし、GCCを使用してコードをコンパイルしようとすると、次のエラーメッセージが表示されます。

アセンブラーメッセージ:19:エラー:再配置オーバーフロー

私の推測では、これは私が適用しているビットマスクのサイズと関係があると思います。なぜなら、私は少数を含む2つのレジスタを実行すると、同じエラーが発生しないからです。コード自体は次のように見えます、

.global main
main:
save    %sp, -96, %sp

clr %l1
clr     %l2
set 0xffff, %l0
set 0xaaaa8c01, %l4
set 0xff001234, %l5
set 0x13579bdf, %l6
set 0xc8b4ae32, %l7
srl %l4, 31, %l1    
srl %l0, 15, %l2
xor %l1, %l2, %l1
and %l1, 0x1, %l1
sll %l0, 1, %l0
add %l0, %l1, %l0
and %l0, 0xffff, %l0


mov 1, %g1
ta  0

誰かがこの問題を解決する方法についての洞察を提供できれば、それは非常に高く評価されるでしょう。

ありがとう、

バッドパンダ

役に立ちましたか?

解決

最も重要なビットはビット15です(ビットがゼロベースの16ビット整数で)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top