📄 crc32.asm
字号:
{ .mmb //R-Addr: 0X03a0
ld8 r8=[r9] //244 cc:37
ld4 r29=[r30] //244 cc:37
nop.b 0;;
}
{ .mmi //R-Addr: 0X03b0
ld1 r31=[r8];; //244 cc:39
xor r28=r29, r31 //244 cc:40
nop.i 0;;
}
{ .mii //R-Addr: 0X03c0
nop.m 0
zxt1 r27=r28;; //244 cc:41
sxt4 r26=r27;; //244 cc:42
}
{ .mii //R-Addr: 0X03d0
nop.m 0
shl r25=r26, 2;; //244 cc:43
addl r22=@ltoff(crc_table#),gp //244 cc:0
}
{ .mmi //R-Addr: 0X03e0
adds r19=crc$, sp //244 cc:0
adds r11=crc$, sp //244 cc:0
adds r10=buf$, sp;; //244 cc:0
}
{ .mmi //R-Addr: 0X03f0
ld8 r21=[r22] //244 cc:1
ld4 r18=[r19] //244 cc:1
adds r31=buf$, sp //244 cc:1
}
{ .mmi //R-Addr: 0X0400
adds r30=buf$, sp //244 cc:1
adds r27=crc$, sp //244 cc:1
addl r19=@ltoff(crc_table#),gp;; //244 cc:1
}
{ .mib //R-Addr: 0X0410
add r20=r21, r25 //244 cc:2
extr.u r17=r18, 8, 24 //244 cc:2
nop.b 0;;
}
{ .mmi //R-Addr: 0X0420
ld4 r16=[r20];; //244 cc:3
xor r15=r16, r17 //244 cc:4
adds r16=crc$, sp;; //244 cc:4
}
{ .mmb //R-Addr: 0X0430
st4 [r11]=r15 //244 cc:5
ld8 r9=[r10] //244 cc:5
nop.b 0;;
}
{ .mmi //R-Addr: 0X0440
adds r8=1, r9;; //244 cc:6
st8 [r31]=r8 //244 cc:7
adds r8=crc$, sp //244 cc:7
}
{ .mmi //R-Addr: 0X0450
ld8 r29=[r30] //244 cc:7
ld4 r26=[r27] //244 cc:7
adds r31=buf$, sp;; //244 cc:7
}
{ .mmi //R-Addr: 0X0460
ld8 r18=[r19] //244 cc:8
ld4 r15=[r16] //244 cc:8
adds r27=buf$, sp //244 cc:8
}
{ .mmi //R-Addr: 0X0470
addl r16=@ltoff(crc_table#),gp;; //244 cc:8
ld1 r28=[r29] //244 cc:9
extr.u r11=r15, 8, 24;; //244 cc:9
}
{ .mii //R-Addr: 0X0480
xor r25=r26, r28 //244 cc:10
adds r28=buf$, sp;; //244 cc:10
zxt1 r22=r25;; //244 cc:11
}
{ .mii //R-Addr: 0X0490
nop.m 0
sxt4 r21=r22 //244 cc:12
adds r22=crc$, sp;; //244 cc:12
}
{ .mii //R-Addr: 0X04a0
nop.m 0
shl r20=r21, 2;; //244 cc:13
add r17=r18, r20;; //244 cc:14
}
{ .mmi //R-Addr: 0X04b0
ld4 r10=[r17];; //244 cc:15
xor r9=r10, r11 //244 cc:16
adds r10=crc$, sp;; //244 cc:16
}
{ .mmb //R-Addr: 0X04c0
st4 [r8]=r9 //244 cc:17
ld8 r30=[r31] //244 cc:17
nop.b 0;;
}
{ .mmi //R-Addr: 0X04d0
adds r29=1, r30;; //244 cc:18
st8 [r28]=r29 //244 cc:19
adds r29=crc$, sp //244 cc:19
}
{ .mmi //R-Addr: 0X04e0
ld8 r26=[r27] //244 cc:19
ld4 r21=[r22] //244 cc:19
adds r28=buf$, sp;; //244 cc:19
}
{ .mmi //R-Addr: 0X04f0
ld8 r15=[r16] //244 cc:20
ld4 r9=[r10] //244 cc:20
adds r22=buf$, sp //244 cc:20
}
{ .mmi //R-Addr: 0X0500
addl r10=@ltoff(crc_table#),gp;; //244 cc:20
ld1 r25=[r26] //244 cc:21
extr.u r8=r9, 8, 24;; //244 cc:21
}
{ .mii //R-Addr: 0X0510
xor r20=r21, r25 //244 cc:22
adds r25=buf$, sp;; //244 cc:22
zxt1 r19=r20;; //244 cc:23
}
{ .mii //R-Addr: 0X0520
nop.m 0
sxt4 r18=r19 //244 cc:24
adds r19=crc$, sp;; //244 cc:24
}
{ .mii //R-Addr: 0X0530
nop.m 0
shl r17=r18, 2;; //244 cc:25
add r11=r15, r17;; //244 cc:26
}
{ .mmi //R-Addr: 0X0540
ld4 r31=[r11];; //244 cc:27
xor r30=r31, r8 //244 cc:28
adds r31=crc$, sp;; //244 cc:28
}
{ .mmb //R-Addr: 0X0550
st4 [r29]=r30 //244 cc:29
ld8 r27=[r28] //244 cc:29
nop.b 0;;
}
{ .mmi //R-Addr: 0X0560
adds r26=1, r27;; //244 cc:30
st8 [r25]=r26 //244 cc:31
adds r26=crc$, sp //244 cc:31
}
{ .mmb //R-Addr: 0X0570
ld8 r21=[r22] //244 cc:31
ld4 r18=[r19] //244 cc:31
nop.b 0;;
}
{ .mmb //R-Addr: 0X0580
ld8 r9=[r10] //244 cc:32
ld4 r30=[r31] //244 cc:32
nop.b 0;;
}
{ .mii //R-Addr: 0X0590
ld1 r20=[r21] //244 cc:33
extr.u r29=r30, 8, 24;; //244 cc:33
xor r17=r18, r20;; //244 cc:34
}
{ .mii //R-Addr: 0X05a0
nop.m 0
zxt1 r16=r17;; //244 cc:35
sxt4 r15=r16;; //244 cc:36
}
{ .mii //R-Addr: 0X05b0
nop.m 0
shl r11=r15, 2;; //244 cc:37
add r8=r9, r11;; //244 cc:38
}
{ .mmi //R-Addr: 0X05c0
ld4 r28=[r8];; //244 cc:39
xor r27=r28, r29 //244 cc:40
nop.i 0;;
}
{ .mmi //R-Addr: 0X05d0
st4 [r26]=r27 //244 cc:0
adds r25=buf$, sp //244 cc:0
adds r20=buf$, sp //244 cc:0
}
{ .mmi //R-Addr: 0X05e0
adds r19=buf$, sp //244 cc:0
adds r16=crc$, sp //244 cc:0
addl r31=@ltoff(crc_table#),gp;; //244 cc:0
}
{ .mii //R-Addr: 0X05f0
ld8 r22=[r25] //244 cc:1
adds r28=crc$, sp;; //244 cc:1
adds r21=1, r22;; //244 cc:2
}
{ .mmi //R-Addr: 0X0600
st8 [r20]=r21 //244 cc:3
ld8 r18=[r19] //244 cc:3
adds r21=crc$, sp //244 cc:3
}
{ .mib //R-Addr: 0X0610
ld4 r15=[r16] //244 cc:3
adds r20=buf$, sp //244 cc:3
nop.b 0;;
}
{ .mmb //R-Addr: 0X0620
ld8 r30=[r31] //244 cc:4
ld4 r27=[r28] //244 cc:4
nop.b 0;;
}
{ .mii //R-Addr: 0X0630
ld1 r17=[r18] //244 cc:5
extr.u r26=r27, 8, 24;; //244 cc:5
xor r11=r15, r17 //244 cc:6
}
{ .mmi //R-Addr: 0X0640
adds r17=buf$, sp;; //244 cc:6
nop.m 0
zxt1 r10=r11;; //244 cc:7
}
{ .mii //R-Addr: 0X0650
nop.m 0
sxt4 r9=r10;; //244 cc:8
shl r8=r9, 2;; //244 cc:9
}
{ .mmi //R-Addr: 0X0660
add r29=r30, r8;; //244 cc:10
ld4 r25=[r29] //244 cc:11
nop.i 0;;
}
{ .mmi //R-Addr: 0X0670
xor r22=r25, r26;; //244 cc:12
st4 [r21]=r22 //244 cc:13
nop.i 0
}
{ .mmi //R-Addr: 0X0680
ld8 r19=[r20];; //244 cc:13
adds r18=1, r19 //244 cc:14
nop.i 0;;
}
{ .mmi //R-Addr: 0X0690
st8 [r17]=r18;; //244 cc:15
adds r16=len$, sp //245 cc:0
adds r10=len$, sp;; //245 cc:0
}
{ .mmi //R-Addr: 0X06a0
ld4 r15=[r16];; //245 cc:1
adds r11=-8, r15 //245 cc:2
nop.i 0;;
}
{ .mmb //R-Addr: 0X06b0
st4 [r10]=r11 //245 cc:4
nop.m 0
br.cond.sptk.few $LN6@crc32#;; //246 cc:0
}
$LN5@crc32:
// 247 : if (len) do {
{ .mmi //R-Addr: 0X06c0
adds r9=len$, sp;; //247 cc:0
ld4 r8=[r9] //247 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X06d0
cmp4.eq.unc p14,p15=r0, r8 //247 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN4@crc32#;; //247 cc:2
}
$LN3@crc32:
// 248 : DO1;
// 249 : } while (--len);
{ .mmi //R-Addr: 0X06e0
adds r31=buf$, sp //248 cc:0
adds r28=crc$, sp //248 cc:0
addl r20=@ltoff(crc_table#),gp //248 cc:0
}
{ .mmi //R-Addr: 0X06f0
adds r17=crc$, sp //248 cc:0
adds r9=crc$, sp //248 cc:0
adds r8=buf$, sp;; //248 cc:0
}
{ .mmb //R-Addr: 0X0700
ld8 r30=[r31] //248 cc:1
ld4 r27=[r28] //248 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X0710
ld8 r19=[r20] //248 cc:2
ld4 r16=[r17] //248 cc:2
nop.b 0;;
}
{ .mii //R-Addr: 0X0720
ld1 r29=[r30] //248 cc:3
extr.u r15=r16, 8, 24;; //248 cc:3
xor r26=r27, r29 //248 cc:4
}
{ .mmi //R-Addr: 0X0730
adds r29=buf$, sp;; //248 cc:4
nop.m 0
zxt1 r25=r26;; //248 cc:5
}
{ .mii //R-Addr: 0X0740
nop.m 0
sxt4 r22=r25;; //248 cc:6
shl r21=r22, 2;; //248 cc:7
}
{ .mmi //R-Addr: 0X0750
add r18=r19, r21;; //248 cc:8
ld4 r11=[r18] //248 cc:9
nop.i 0;;
}
{ .mmi //R-Addr: 0X0760
xor r10=r11, r15;; //248 cc:10
st4 [r9]=r10 //248 cc:11
nop.i 0
}
{ .mmi //R-Addr: 0X0770
ld8 r31=[r8];; //248 cc:11
adds r30=1, r31 //248 cc:12
nop.i 0;;
}
{ .mmi //R-Addr: 0X0780
st8 [r29]=r30;; //248 cc:13
adds r28=len$, sp //249 cc:0
adds r25=len$, sp //249 cc:0
}
{ .mmi //R-Addr: 0X0790
adds r22=len$, sp;; //249 cc:0
ld4 r27=[r28] //249 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X07a0
adds r26=-1, r27;; //249 cc:2
st4 [r25]=r26 //249 cc:3
nop.i 0
}
{ .mmi //R-Addr: 0X07b0
ld4 r21=[r22];; //249 cc:3
cmp4.ne.unc p14,p15=r0, r21 //249 cc:4
nop.i 0
}
{ .mmb //R-Addr: 0X07c0
nop.m 0
nop.m 0
(p14) br.cond.dptk.many $LN3@crc32#;; //249 cc:4
}
$LN4@crc32:
// 250 : return crc ^ 0xffffffffUL;
{ .mmi //R-Addr: 0X07d0
adds r20=crc$, sp;; //250 cc:0
ld4 r19=[r20] //250 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X07e0
xor r8=-1, r19;; //250 cc:2
nop.m 0
nop.i 0;;
}
$LN11@crc32:
// 251 : }
{ .mii //R-Addr: 0X07f0
adds sp=48, sp //251 cc:0, 00000030H
mov.ret b0=r35;; //251 cc:0
mov.i ar.pfs=r36 //251 cc:1
}
{ .mmb //R-Addr: 0X0800
nop.m 0
nop.m 0
br.ret.sptk.many b0;; //251 cc:1
}
// End code for function:
.endp crc32#
.section .pdata
$T78874: data4 @imagerel(crc32_little#)
data4 @imagerel(crc32_little#+4176)
data4 @imagerel($T78873#)
.section .xdata
.skip 8
$T78873: data2 03H
data2 00H
data4 02H
string "\x08" //R1:prologue size 8
string "\xe0\x00\x02" //P7:mem_stack_f time 0 size 2
string "\x61\x87\x06" //R3:body size 775
string "\x81" //B1:label_state 1
string "\xc0\x01" //B2:ecount 0 time 1
string "\x00\x00\x00\x00\x00\x00" //padding
// Function compile flags: /Odtp
.section .text
// Begin code for function: crc32_little:
.proc crc32_little#
.align 32
buf4$ = 0
c$ = 8
crc$ = 16
buf$ = 24
len$ = 32
crc32_little:
// crc$ = r32
// buf$ = r33
// len$ = r34
// Output regs: None
// 266 : {
// 267 : register u4 c;
// 268 : register const u4 FAR *buf4;
// 269 :
// 270 : c = (u4)crc;
// 271 : c = ~c;
{ .mmi //R-Addr: 0X00
adds sp=-32, sp;; //266 cc:0
adds r31=crc$, sp
adds r30=buf$, sp
}
{ .mmi //R-Addr: 0X010
adds r29=len$, sp;;
st4 [r31]=r32
nop.i 0
}
{ .mmi //R-Addr: 0X020
st8 [r30]=r33;;
st4 [r29]=r34
nop.i 0;;
}
{ .mib //R-Addr: 0X030
adds r28=crc$, sp //270 cc:0
adds r26=c$, sp //270 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X040
ld4 r27=[r28];; //270 cc:1
st4 [r26]=r27 //270 cc:2
nop.i 0;;
}
{ .mib //R-Addr: 0X050
adds r25=c$, sp //271 cc:0
adds r20=c$, sp //271 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X060
ld4 r22=[r25];; //271 cc:1
xor r21=-1, r22 //271 cc:2
nop.i 0;;
}
{ .mmb //R-Addr: 0X070
st4 [r20]=r21 //271 cc:3
nop.m 0
nop.b 0;;
}
$LN10@crc32_litt:
// 272 : while (len && ((ptrdiff_t)buf & 3)) {
{ .mmi //R-Addr: 0X080
adds r19=len$, sp;; //272 cc:0
ld4 r18=[r19] //272 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X090
cmp4.eq.unc p14,p15=r0, r18 //272 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN9@crc32_litt#;; //272 cc:2
}
// 272 : while (len && ((ptrdiff_t)buf & 3)) {
{ .mmi //R-Addr: 0X0a0
adds r17=buf$, sp;; //272 cc:3
ld8 r16=[r17] //272 cc:4
nop.i 0;;
}
{ .mmi //R-Addr: 0X0b0
and r15=3, r16;; //272 cc:5
cmp.eq.unc p14,p15=r0, r15 //272 cc:6
nop.i 0
}
{ .mmb //R-Addr: 0X0c0
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN9@crc32_litt#;; //272 cc:6
}
// 273 : c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
// 274 : len--;
// 275 : }
{ .mmi //R-Addr: 0X0d0
adds r11=buf$, sp //273 cc:0
adds r8=c$, sp //273 cc:0
addl r26=@ltoff(crc_table#),gp //273 cc:0
}
{ .mmi //R-Addr: 0X0e0
adds r21=c$, sp //273 cc:0
adds r16=c$, sp //273 cc:0
adds r15=buf$, sp;; //273 cc:0
}
{ .mmb //R-Addr: 0X0f0
ld8 r10=[r11] //273 cc:1
ld4 r31=[r8] //273 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X0100
ld8 r25=[r26] //273 cc:2
ld4 r20=[r21] //273 cc:2
nop.b 0;;
}
{ .mii //R-Addr: 0X0110
ld1 r9=[r10] //273 cc:3
extr.u r19=r20, 8, 24;; //273 cc:3
xor r30=r31, r9 //273 cc:4
}
{ .mmi //R-Addr: 0X0120
adds r9=buf$, sp;; //273 cc:4
nop.m 0
zxt1 r29=r30;; //273 cc:5
}
{ .mii //R-Addr: 0X0130
nop.m 0
zxt4 r28=r29;; //273 cc:6
shl r27=r28, 2;; //273 cc:7
}
{ .mmi //R-Addr: 0X0140
add r22=r25, r27;; //273 cc:8
ld4 r18=[r22] //273 cc:9
nop.i 0;;
}
{ .mmi //R-Addr: 0X0150
xor r17=r18, r19;; //273 cc:10
st4 [r16]=r17 //273 cc:11
nop.i 0
}
{ .mmi //R-Addr: 0X0160
ld8 r11=[r15];; //273 cc:11
adds r10=1, r11 //273 cc:12
nop.i 0;;
}
{ .mmi //R-Addr: 0X0170
st8 [r9]=r10;; //273 cc:13
adds r8=len$, sp //274 cc:0
adds r29=len$, sp;; //274 cc:0
}
{ .mmi //R-Addr: 0X0180
ld4 r31=[r8];; //274 cc:1
adds r30=-1, r31 //274 cc:2
nop.i 0;;
}
{ .mmb //R-Addr: 0X0190
st4 [r29]=r30 //274 cc:4
nop.m 0
br.cond.sptk.few $LN10@crc32_litt#;; //275 cc:0
}
$LN9@crc32_litt:
// 276 :
// 277 : buf4 = (const u4 FAR *)(const void FAR *)buf;
{ .mib //R-Addr: 0X01a0
adds r28=buf$, sp //277 cc:0
adds r26=buf4$, sp //277 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X01b0
ld8 r27=[r28];; //277 cc:1
st8 [r26]=r27 //277 cc:2
nop.i 0;;
}
$LN8@crc32_litt:
// 278 : while (len >= 32) {
{ .mmi //R-Addr: 0X01c0
adds r25=len$, sp;; //278 cc:0
ld4 r22=[r25] //278 cc:1
nop.i 0;;
}
{ .mmb //R-Addr: 0X01d0
cmp4.gtu.unc p14,p15=32, r22 //278 cc:2
nop.m 0
(p14) br.cond.dptk.few $LN6@crc32_litt#;; //278 cc:2
}
// 279 : DOLIT32;
// 280 : len -= 32;
// 281 : }
{ .mmi //R-Addr: 0X01e0
adds r19=buf4$, sp //279 cc:0
adds r21=c$, sp //279 cc:0
adds r15=c$, sp //279 cc:0
}
{ .mmi //R-Addr: 0X01f0
adds r11=buf4$, sp //279 cc:0
adds r8=buf4$, sp //279 cc:0
adds r28=c$, sp;; //279 cc:0
}
{ .mmi //R-Addr: 0X0200
ld8 r18=[r19] //279 cc:1
ld4 r20=[r21] //279 cc:1
addl r31=@ltoff(crc_table#),gp;; //279 cc:1
}
{ .mmi //R-Addr: 0X0210
ld4 r17=[r18];; //279 cc:3
xor r16=r20, r17 //279 cc:4
adds r17=c$, sp //279 cc:4
}
{ .mmi //R-Addr: 0X0220
addl r20=@ltoff(crc_table#),gp;; //279 cc:4
st4 [r15]=r16 //279 cc:5
nop.i 0
}
{ .mmi //R-Addr: 0X0230
ld8 r10=[r11];; //279 cc:5
adds r9=4, r10 //279 cc:6
nop.i 0;;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -