code:dpcmp - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
- 对两个双字长数据进行比较大小
- 共输入四个参数,设为A,a,B,b
- A : 第一个数据的高位
- a : 第一个数据的低位
- B : 第二个数据的高位
- b : 第二个数据的低位
- 返回值 : 在 -512 ~ 512 的范围内返回Aa - Bb,规则如下
- 若 Aa - Bb > 512 ,则返回512
- 若 Aa - Bb < -512 ,则返回-512
- 否则, 返回Aa - Bb
- 具体分析请参考附图
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