簡體   English   中英

ARMv6程序集中的整數是否環繞?

[英]Do integers wrap around in ARMv6 assembly?

如果我從整數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?

從v6-M參考手冊的A2.2.1節“整數算術”,“移位和旋轉操作”小節:

(LSL)將位串的每個位移動指定的位數。 零位在位串的右端移入。 從位串左端移出的位被丟棄,除了最后一位這樣的位可以產生為進位輸出。

因此它變為0並且設置進位標志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM