66a6fbf807497be46b837573176f1e3b4f00bb49
[YACASL2.git] / as / fe_tests / 2010_10 / Q12 / lrevrs.casl
1 PREVRS  START
2         RPUSH
3         LD    GR4,0,GR1     ; ビット列を保存
4         CALL  REVRS         ; ビット列のビットの並びを逆転
5         LD    GR5,0,GR1     ; GR5 ← 逆転したビット列
6         LD    GR6,=16
7         SUBA  GR6,GR3       ; GR6 ← 16 - q
8         SRL   GR5,0,GR2     ; 逆転した部分ビット列αを右端に移動
9         SLL   GR5,0,GR6     ; 逆転した部分ビット列αを左端に移動
10         SRL   GR5,0,GR2     ; 逆転した部分ビット列αを p ビットに移動
11         LD    GR6,=#8000
12         SRA   GR6,-1,GR3    ; q ビット連続した1の並びを作成
13         SRL   GR6,0,GR2
14         XOR   GR6,=#FFFF
15         AND   GR6,GR4       ; 元のビット列中の部分ビット列αにゼロを設定
16         OR    GR6,GR5
17         ST    GR6,0,GR1
18         RPOP
19         RET
20         END