📄 adler32.asm
字号:
setf.sig f50=r27 //120 cc:2
(p15) break.i 1 //120 cc:2
nop.b 0;;
}
{ .mfb //R-Addr: 0X01770
nop.m 0
fcvt.xuf.s1 f53=f51 //120 cc:7
nop.b 0;;
}
{ .mfb //R-Addr: 0X01780
nop.m 0
fcvt.xuf.s1 f52=f50 //120 cc:8
nop.b 0;;
}
{ .mfb //R-Addr: 0X01790
nop.m 0
frcpa.s1 f55,p10=f52, f53 //120 cc:12
nop.b 0;;
}
{ .mfb //R-Addr: 0X017a0
nop.m 0
(p10) fma.s1 f56=f52, f55, f0 //120 cc:16
nop.b 0
}
{ .mfb //R-Addr: 0X017b0
nop.m 0
(p10) fnma.s1 f55=f53, f55, f1 //120 cc:16
nop.b 0;;
}
{ .mmb //R-Addr: 0X017c0
setf.sig f53=r25, f53 //120 cc:17
nop.m 0
nop.b 0;;
}
{ .mfb //R-Addr: 0X017d0
nop.m 0
(p10) fma.s1 f52=f55, f55, f54, f52 //120 cc:20
nop.b 0
}
{ .mfb //R-Addr: 0X017e0
nop.m 0
(p10) fma.s1 f56=f55, f56, f56 //120 cc:20
nop.b 0;;
}
{ .mfb //R-Addr: 0X017f0
nop.m 0
(p10) fma.s1 f55=f52, f56, f56, f55 //120 cc:24
nop.b 0;;
}
{ .mfb //R-Addr: 0X01800
nop.m 0
fcvt.fxu.trunc.s1 f52=f55, f52 //120 cc:28
nop.b 0;;
}
{ .mfb //R-Addr: 0X01810
nop.m 0
xma.l f55=f52, f53, f50, f55 //120 cc:32
nop.b 0;;
}
{ .mmi //R-Addr: 0X01820
getf.sig r22=f55;; //120 cc:36
st4 [r21]=r22 //120 cc:41
nop.i 0;;
}
$LN5@adler32:
// 121 : }
// 122 :
// 123 : /* return recombined sums */
// 124 : return adler | (sum2 << 16);
{ .mib //R-Addr: 0X01830
adds r20=sum2$, sp //124 cc:0
adds r17=adler$, sp //124 cc:0
nop.b 0;;
}
{ .mmb //R-Addr: 0X01840
ld4 r19=[r20] //124 cc:1
ld4 r16=[r17] //124 cc:1
nop.b 0;;
}
{ .mii //R-Addr: 0X01850
nop.m 0
shl r18=r19, 16;; //124 cc:2
or r8=r16, r18;; //124 cc:3
}
$LN19@adler32:
// 125 : }
{ .mmb //R-Addr: 0X01860
adds sp=32, sp //125 cc:0
nop.m 0
br.ret.sptk.many b0;; //125 cc:0
}
// End code for function:
.endp adler32#
.type adler32_combine# ,@function
.global adler32_combine#
.section .pdata
$T78747: data4 @imagerel($LN7@adler32_co#)
data4 @imagerel($LN7@adler32_co#+1328)
data4 @imagerel($T78745#)
.section .xdata
.skip 8
$T78745: 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\xf1\x01" //R3:body size 241
string "\x81" //B1:label_state 1
string "\xc0\x02" //B2:ecount 0 time 2
string "\x00\x00\x00\x00\x00\x00" //padding
// Function compile flags: /Odtp
.section .text
// Begin code for function: adler32_combine:
.proc adler32_combine#
.align 32
rem$ = 4
sum2$ = 8
adler1$ = 16
adler2$ = 24
len2$ = 32
adler32_combine:
// adler1$ = r32
// adler2$ = r33
// len2$ = r34
// Output regs: None
$LN7@adler32_co:
// 132 : {
// 133 : unsigned long sum1;
// 134 : unsigned long sum2;
// 135 : unsigned rem;
// 136 :
// 137 : /* the derivation of this formula is left as an exercise for the reader */
// 138 : rem = (unsigned)(len2 % BASE);
// 139 : sum1 = adler1 & 0xffff;
// 140 : sum2 = rem * sum1;
// 141 : MOD(sum2);
// 142 : sum1 += (adler2 & 0xffff) + BASE - 1;
// 143 : sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem;
// 144 : if (sum1 > BASE) sum1 -= BASE;
{ .mmi //R-Addr: 0X00
adds sp=-32, sp;; //132 cc:0
adds r31=adler1$, sp
adds r30=adler2$, sp
}
{ .mmi //R-Addr: 0X010
adds r29=len2$, sp;;
st4 [r31]=r32
nop.i 0
}
{ .mmi //R-Addr: 0X020
st4 [r30]=r33;;
st4 [r29]=r34
nop.i 0;;
}
{ .mmi //R-Addr: 0X030
adds r28=len2$, sp //138 cc:0
mov r26=65521 //138 cc:0, 0000fff1H
mov r25=65501 //138 cc:0, 0000ffddH
}
{ .mmi //R-Addr: 0X040
adds r21=rem$, sp;; //138 cc:0
ld4 r27=[r28] //138 cc:1
cmp.eq.unc p15,p0=0, r26 //138 cc:1
}
{ .mmi //R-Addr: 0X050
setf.sig f7=r26 //138 cc:1
setf.exp f10=r25 //138 cc:1
sub r25=r0, r26, r25;; //138 cc:1
}
{ .mib //R-Addr: 0X060
setf.sig f6=r27 //138 cc:2
(p15) break.i 1 //138 cc:2
nop.b 0;;
}
{ .mfb //R-Addr: 0X070
nop.m 0
fcvt.xuf.s1 f9=f7 //138 cc:7
nop.b 0;;
}
{ .mfb //R-Addr: 0X080
nop.m 0
fcvt.xuf.s1 f8=f6 //138 cc:8
nop.b 0;;
}
{ .mfb //R-Addr: 0X090
nop.m 0
frcpa.s1 f11,p6=f8, f9 //138 cc:12
nop.b 0;;
}
{ .mfb //R-Addr: 0X0a0
nop.m 0
(p6) fma.s1 f12=f8, f11, f0 //138 cc:16
nop.b 0
}
{ .mfb //R-Addr: 0X0b0
nop.m 0
(p6) fnma.s1 f11=f9, f11, f1 //138 cc:16
nop.b 0;;
}
{ .mmb //R-Addr: 0X0c0
setf.sig f9=r25, f9 //138 cc:17
nop.m 0
nop.b 0;;
}
{ .mfb //R-Addr: 0X0d0
nop.m 0
(p6) fma.s1 f8=f11, f11, f10, f8 //138 cc:20
nop.b 0
}
{ .mfb //R-Addr: 0X0e0
nop.m 0
(p6) fma.s1 f12=f11, f12, f12 //138 cc:20
nop.b 0;;
}
{ .mfb //R-Addr: 0X0f0
nop.m 0
(p6) fma.s1 f11=f8, f12, f12, f11 //138 cc:24
nop.b 0;;
}
{ .mfb //R-Addr: 0X0100
nop.m 0
fcvt.fxu.trunc.s1 f8=f11, f8 //138 cc:28
nop.b 0;;
}
{ .mfb //R-Addr: 0X0110
nop.m 0
xma.l f11=f8, f9, f6, f11 //138 cc:32
nop.b 0;;
}
{ .mmi //R-Addr: 0X0120
getf.sig r22=f11;; //138 cc:36
st4 [r21]=r22 //138 cc:41
nop.i 0;;
}
{ .mib //R-Addr: 0X0130
adds r20=adler1$, sp //139 cc:0
adds r17=sum1$, sp //139 cc:0
nop.b 0;;
}
{ .mmi //R-Addr: 0X0140
ld4 r19=[r20];; //139 cc:1
nop.m 0
zxt2 r18=r19;; //139 cc:2
}
{ .mmi //R-Addr: 0X0150
st4 [r17]=r18;; //139 cc:3
adds r16=rem$, sp //140 cc:0
adds r11=sum1$, sp //140 cc:0
}
{ .mmi //R-Addr: 0X0160
adds r8=sum2$, sp;; //140 cc:0
ld4 r15=[r16] //140 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X0170
ld4 r10=[r11];; //140 cc:1
setf.sig f13=r15 //140 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X0180
setf.sig f14=r10 //140 cc:2
nop.m 0
nop.b 0;;
}
{ .mfb //R-Addr: 0X0190
nop.m 0
xma.lu f15=f13, f14, f0 //140 cc:8
nop.b 0;;
}
{ .mmi //R-Addr: 0X01a0
getf.sig r9=f15;; //140 cc:12
st4 [r8]=r9 //140 cc:17
nop.i 0;;
}
{ .mmi //R-Addr: 0X01b0
adds r31=sum2$, sp //141 cc:0
mov r29=65521 //141 cc:0, 0000fff1H
mov r28=65501 //141 cc:0, 0000ffddH
}
{ .mmi //R-Addr: 0X01c0
adds r26=sum2$, sp;; //141 cc:0
ld4 r30=[r31] //141 cc:1
cmp.eq.unc p15,p0=0, r29 //141 cc:1
}
{ .mmi //R-Addr: 0X01d0
setf.sig f33=r29 //141 cc:1
setf.exp f36=r28 //141 cc:1
sub r28=r0, r29, r28;; //141 cc:1
}
{ .mib //R-Addr: 0X01e0
setf.sig f32=r30 //141 cc:2
(p15) break.i 1 //141 cc:2
nop.b 0;;
}
{ .mfb //R-Addr: 0X01f0
nop.m 0
fcvt.xuf.s1 f35=f33 //141 cc:7
nop.b 0;;
}
{ .mfb //R-Addr: 0X0200
nop.m 0
fcvt.xuf.s1 f34=f32 //141 cc:8
nop.b 0;;
}
{ .mfb //R-Addr: 0X0210
nop.m 0
frcpa.s1 f37,p7=f34, f35 //141 cc:12
nop.b 0;;
}
{ .mfb //R-Addr: 0X0220
nop.m 0
(p7) fma.s1 f38=f34, f37, f0 //141 cc:16
nop.b 0
}
{ .mfb //R-Addr: 0X0230
nop.m 0
(p7) fnma.s1 f37=f35, f37, f1 //141 cc:16
nop.b 0;;
}
{ .mmb //R-Addr: 0X0240
setf.sig f35=r28, f35 //141 cc:17
nop.m 0
nop.b 0;;
}
{ .mfb //R-Addr: 0X0250
nop.m 0
(p7) fma.s1 f34=f37, f37, f36, f34 //141 cc:20
nop.b 0
}
{ .mfb //R-Addr: 0X0260
nop.m 0
(p7) fma.s1 f38=f37, f38, f38 //141 cc:20
nop.b 0;;
}
{ .mfb //R-Addr: 0X0270
nop.m 0
(p7) fma.s1 f37=f34, f38, f38, f37 //141 cc:24
nop.b 0;;
}
{ .mfb //R-Addr: 0X0280
nop.m 0
fcvt.fxu.trunc.s1 f34=f37, f34 //141 cc:28
nop.b 0;;
}
{ .mfb //R-Addr: 0X0290
nop.m 0
xma.l f37=f34, f35, f32, f37 //141 cc:32
nop.b 0;;
}
{ .mmi //R-Addr: 0X02a0
getf.sig r27=f37;; //141 cc:36
st4 [r26]=r27 //141 cc:41
nop.i 0;;
}
{ .mmi //R-Addr: 0X02b0
adds r25=adler2$, sp //142 cc:0
mov r20=65521 //142 cc:0, 0000fff1H
adds r17=sum1$, sp //142 cc:0
}
{ .mmi //R-Addr: 0X02c0
adds r11=sum1$, sp;; //142 cc:0
ld4 r22=[r25] //142 cc:1
nop.i 0
}
{ .mmi //R-Addr: 0X02d0
ld4 r16=[r17];; //142 cc:1
nop.m 0
zxt2 r21=r22;; //142 cc:2
}
{ .mmi //R-Addr: 0X02e0
add r19=r20, r21;; //142 cc:3
adds r18=-1, r19 //142 cc:4
nop.i 0;;
}
{ .mmi //R-Addr: 0X02f0
add r15=r16, r18;; //142 cc:5
st4 [r11]=r15 //142 cc:6
nop.i 0;;
}
{ .mmi //R-Addr: 0X0300
adds r10=adler1$, sp //143 cc:0
adds r31=adler2$, sp //143 cc:0
mov r27=65521 //143 cc:0, 0000fff1H
}
{ .mmi //R-Addr: 0X0310
adds r25=rem$, sp //143 cc:0
adds r20=sum2$, sp //143 cc:0
adds r17=sum2$, sp;; //143 cc:0
}
{ .mmb //R-Addr: 0X0320
ld4 r9=[r10] //143 cc:1
ld4 r30=[r31] //143 cc:1
nop.b 0;;
}
{ .mmi //R-Addr: 0X0330
ld4 r22=[r25] //143 cc:2
ld4 r19=[r20] //143 cc:2
extr.u r8=r9, 16, 16 //143 cc:2
}
{ .mii //R-Addr: 0X0340
nop.m 0
extr.u r29=r30, 16, 16;; //143 cc:2
add r28=r8, r29;; //143 cc:3
}
{ .mmi //R-Addr: 0X0350
add r26=r27, r28;; //143 cc:4
sub r21=r26, r22 //143 cc:5
nop.i 0;;
}
{ .mmi //R-Addr: 0X0360
add r18=r19, r21;; //143 cc:6
st4 [r17]=r18 //143 cc:7
nop.i 0;;
}
{ .mib //R-Addr: 0X0370
adds r16=sum1$, sp //144 cc:0
mov r11=65521 //144 cc:0, 0000fff1H
nop.b 0;;
}
{ .mmi //R-Addr: 0X0380
ld4 r15=[r16];; //144 cc:1
cmp4.geu.unc p14,p15=r11, r15 //144 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X0390
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN4@adler32_co#;; //144 cc:2
}
// 144 : if (sum1 > BASE) sum1 -= BASE;
{ .mmi //R-Addr: 0X03a0
adds r10=sum1$, sp //144 cc:3
mov r8=65521 //144 cc:3, 0000fff1H
adds r30=sum1$, sp;; //144 cc:3
}
{ .mmi //R-Addr: 0X03b0
ld4 r9=[r10];; //144 cc:4
sub r31=r9, r8 //144 cc:5
nop.i 0;;
}
{ .mmb //R-Addr: 0X03c0
st4 [r30]=r31 //144 cc:6
nop.m 0
nop.b 0;;
}
$LN4@adler32_co:
// 145 : if (sum1 > BASE) sum1 -= BASE;
{ .mib //R-Addr: 0X03d0
adds r29=sum1$, sp //145 cc:0
mov r27=65521 //145 cc:0, 0000fff1H
nop.b 0;;
}
{ .mmi //R-Addr: 0X03e0
ld4 r28=[r29];; //145 cc:1
cmp4.geu.unc p14,p15=r27, r28 //145 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X03f0
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN3@adler32_co#;; //145 cc:2
}
// 145 : if (sum1 > BASE) sum1 -= BASE;
{ .mmi //R-Addr: 0X0400
adds r26=sum1$, sp //145 cc:3
mov r22=65521 //145 cc:3, 0000fff1H
adds r20=sum1$, sp;; //145 cc:3
}
{ .mmi //R-Addr: 0X0410
ld4 r25=[r26];; //145 cc:4
sub r21=r25, r22 //145 cc:5
nop.i 0;;
}
{ .mmb //R-Addr: 0X0420
st4 [r20]=r21 //145 cc:6
nop.m 0
nop.b 0;;
}
$LN3@adler32_co:
// 146 : if (sum2 > (BASE << 1)) sum2 -= (BASE << 1);
{ .mib //R-Addr: 0X0430
adds r19=sum2$, sp //146 cc:0
mov r17=131042 //146 cc:0, 0001ffe2H
nop.b 0;;
}
{ .mmi //R-Addr: 0X0440
ld4 r18=[r19];; //146 cc:1
cmp4.geu.unc p14,p15=r17, r18 //146 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X0450
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN2@adler32_co#;; //146 cc:2
}
// 146 : if (sum2 > (BASE << 1)) sum2 -= (BASE << 1);
{ .mmi //R-Addr: 0X0460
adds r16=sum2$, sp //146 cc:3
mov r11=131042 //146 cc:3, 0001ff
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -