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

Table of Contents

Source

  • 对两个双字长数据进行比较大小
  • 共输入四个参数,设为A,a,B,b
  • A : 第一个数据的高位
  • a : 第一个数据的低位
  • B : 第二个数据的高位
  • b : 第二个数据的低位
  • 返回值 : 在 -512 ~ 512 的范围内返回Aa - Bb,规则如下
    • 若 Aa - Bb > 512 ,则返回512
    • 若 Aa - Bb < -512 ,则返回-512
    • 否则, 返回Aa - Bb
1325 /* ------------------------- */
1326 .globl _dpcmp
1327 _dpcmp:
1328     mov 2(sp),r0
1329     mov 4(sp),r1
1330     sub 6(sp),r0
1331     sub 8(sp),r1
1332     sbc r0
1333     bge 1f
1334     cmp r0,$-1
1335     bne 2f
1336     cmp r1,$-512.
1337     bhi 3f
1338 2:
1339     mov $-512.,r0
1340     rts pc
1341 1:
1342     bne 2f
1343     cmp r1,$512.
1344     blo 3f
1345 2:
1346     mov $512.,r1
1347 3:
1348     mov r1,r0
1349     rts pc

Extend

附图

Ref

Caller

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