code:lshift - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki

Source

  • 进行双字长数据的位移,返回位移结果(不改变源数据)
  • 共传入两个参数,设为 nump , bits
    • nump : 指向欲进行操作的双字长数据
    • bits : 进行位移的位数
      • 若为正数,向左位移
      • 若为负数,向右位移
  • 返回 位移结果的低字节

1408 /* ------------------------- */

1409 .globl _lshift

1410 _lshift:

1411     mov 2(sp),r1

  • nump → R1
1412     mov (r1)+,r0

1413     mov (r1),r1

  • 数据高字节 → R0
  • 数据低字节 → R1
1414     ashc 4(sp),r0
  • 进行位移,位移位数为 bits
1415     mov r1,r0
  • 返回值 置为 位移结果的低字节
1416     rts pc

1417

Ref

Caller

⚠️ **GitHub.com Fallback** ⚠️