1

整数から始めて、レジスタ内の値1を繰り返しLSL、整数がオーバーフローしたら、意図した動作は何ですか?

mov r0,#1 /* 00000000000000000000000000000001 */
lsl r0,#1 /* 00000000000000000000000000000010 */
/* repeat 31 times */
lsl r0,#1 /* 10000000000000000000000000000000 */

次の LSL で、プログラムは次のことを行う必要があります。

  1. クラッシュ
  2. r0 を 1 に戻す
  3. 他の何か?r0 = 0 ?
4

1 に答える 1

3

v6-M リファレンス マニュアルのセクション A2.2.1、「整数演算」、サブセクション「シフトおよび回転操作」から:

(LSL) ビット文字列の各ビットを、指定されたビット数だけ左に移動します。ビット文字列の右端にゼロがシフトインされます。ビット列の左端からシフトされたビットは破棄されますが、最後のそのようなビットはキャリー出力として生成されます。

したがって 0 になり、キャリーフラグがセットされます。

于 2013-06-22T04:30:42.667 に答える