📄 testzlib.asm
字号:
// Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.21022.08
.file "f:/Study/wincezip/DLL/contrib/testzlib/testzlib.c"
.radix D
.section .text, "ax", "progbits"
.align 32
.section .pdata, "a", "progbits"
.align 4
.section .xdata, "a", "progbits"
.align 8
.section .text$zz, "ax", "progbits"
.align 16
.section .pdata, "a", "progbits"
.align 4
.section .text$zy, "ax", "progbits"
.align 16
.section .pdata, "a", "progbits"
.align 4
.section .data, "wa", "progbits"
.align 16
.section .rdata, "a", "progbits"
.align 16
.section .bss, "wa", "nobits"
.align 16
.section .debug$S, "ax", "progbits"
.align 16
.section $$TYPES, "ax", "progbits"
.align 16
.section .tls$, "was", "progbits"
.align 16
.section .sdata, "was", "progbits"
.align 16
.section .sbss, "was", "nobits"
.align 16
.section .srdata, "as", "progbits"
.align 16
.section .rdata, "a", "progbits"
.align 16
.section .data
$SG80336:
string "run TestZlib <File> [BlockSizeCompress] [BlockSizeUncomp"
string "ress] [compres. level]\n\000"
$SG80338:
string "error reading %s\n\000"
.skip 14
$SG80340:
string "file %s read, %u bytes\n\000"
.skip 8
$SG80358:
string "total compress size = %u, in %u step\n\000"
.skip 10
$SG80360:
string "time = %u msec = %f sec\n\000"
.skip 7
$SG80362:
string "defcpr time QP = %u msec = %f sec\n\000"
.skip 13
$SG80363:
string "defcpr result rdtsc = %I64x\n\n\000"
.skip 2
$SG80378:
string "total uncompress size = %u, in %u step\n\000"
.skip 8
$SG80380:
string "time = %u msec = %f sec\n\000"
.skip 7
$SG80382:
string "uncpr time QP = %u msec = %f sec\n\000"
.skip 13
$SG80383:
string "uncpr result rdtsc = %I64x\n\n\000"
.skip 2
$SG80386:
string "compare ok\n\000"
.section .sdata
$SG80305:
string "rb\000"
.skip 5
$SG80373:
string "1.2.3\000"
.skip 2
$SG80353:
string "1.2.3\000"
.type MyDoMinus64# ,@function
.global MyDoMinus64#
.section .pdata
$T80430: data4 @imagerel($LN5@MyDoMinus6#)
data4 @imagerel($LN5@MyDoMinus6#+352)
data4 @imagerel($T80428#)
.section .xdata
$T80428: data2 03H
data2 00H
data4 02H
string "\x08" //R1:prologue size 8
string "\xe0\x00\x01" //P7:mem_stack_f time 0 size 1
string "\x61\x3a" //R3:body size 58
string "\x81" //B1:label_state 1
string "\xc0\x02" //B2:ecount 0 time 2
string "\x00\x00\x00\x00\x00\x00\x00" //padding
// Function compile flags: /Odtp
// File f:\study\wincezip\dll\contrib\testzlib\testzlib.c
.section .text
// Begin code for function: MyDoMinus64:
.proc MyDoMinus64#
.align 32
R$ = 0
A$ = 8
B$ = 16
MyDoMinus64:
// R$ = r32
// A$ = r33
// B$ = r34
// Output regs: None
$LN5@MyDoMinus6:
// 9 : {
// 10 : R->HighPart = A.HighPart - B.HighPart;
// 11 : if (A.LowPart >= B.LowPart)
{ .mmi //R-Addr: 0X00
adds sp=-16, sp;; //9 cc:0
adds r31=R$, sp
adds r30=A$, sp
}
{ .mmi //R-Addr: 0X010
adds r29=B$, sp;;
st8 [r31]=r32
nop.i 0
}
{ .mmi //R-Addr: 0X020
st8 [r30]=r33;;
st8 [r29]=r34
nop.i 0;;
}
{ .mmi //R-Addr: 0X030
adds r28=A$+4, sp //10 cc:0
adds r26=B$+4, sp //10 cc:0
adds r21=R$, sp;; //10 cc:0
}
{ .mmb //R-Addr: 0X040
ld4 r27=[r28] //10 cc:1
ld4 r25=[r26] //10 cc:1
nop.b 0;;
}
{ .mii //R-Addr: 0X050
ld8 r20=[r21] //10 cc:2
sub r22=r27, r25;; //10 cc:2
adds r19=4, r20;; //10 cc:3
}
{ .mmi //R-Addr: 0X060
st4 [r19]=r22;; //10 cc:4
adds r18=A$, sp //11 cc:0
adds r16=B$, sp;; //11 cc:0
}
{ .mmb //R-Addr: 0X070
ld4 r17=[r18] //11 cc:1
ld4 r15=[r16] //11 cc:1
nop.b 0;;
}
{ .mmb //R-Addr: 0X080
cmp4.ltu.unc p14,p15=r17, r15 //11 cc:2
nop.m 0
(p14) br.cond.dptk.many $LN2@MyDoMinus6#;; //11 cc:2
}
// 12 : R->LowPart = A.LowPart - B.LowPart;
// 13 : else
{ .mmi //R-Addr: 0X090
adds r11=A$, sp //12 cc:0
adds r9=B$, sp //12 cc:0
adds r30=R$, sp;; //12 cc:0
}
{ .mmb //R-Addr: 0X0a0
ld4 r10=[r11] //12 cc:1
ld4 r8=[r9] //12 cc:1
nop.b 0;;
}
{ .mib //R-Addr: 0X0b0
ld8 r29=[r30] //12 cc:2
sub r31=r10, r8 //12 cc:2
nop.b 0;;
}
{ .mmb //R-Addr: 0X0c0
st4 [r29]=r31 //12 cc:4
nop.m 0
br.cond.sptk.few $LN3@MyDoMinus6#;; //13 cc:0
}
$LN2@MyDoMinus6:
// 14 : {
// 15 : R->LowPart = A.LowPart - B.LowPart;
// 16 : R->HighPart --;
{ .mmi //R-Addr: 0X0d0
adds r28=A$, sp //15 cc:0
adds r26=B$, sp //15 cc:0
adds r21=R$, sp;; //15 cc:0
}
{ .mmb //R-Addr: 0X0e0
ld4 r27=[r28] //15 cc:1
ld4 r25=[r26] //15 cc:1
nop.b 0;;
}
{ .mib //R-Addr: 0X0f0
ld8 r20=[r21] //15 cc:2
sub r22=r27, r25 //15 cc:2
nop.b 0;;
}
{ .mmi //R-Addr: 0X0100
st4 [r20]=r22;; //15 cc:3
adds r19=R$, sp //16 cc:0
adds r11=R$, sp;; //16 cc:0
}
{ .mmb //R-Addr: 0X0110
ld8 r18=[r19] //16 cc:1
ld8 r10=[r11] //16 cc:1
nop.b 0;;
}
{ .mib //R-Addr: 0X0120
adds r17=4, r18 //16 cc:2
adds r9=4, r10 //16 cc:2
nop.b 0;;
}
{ .mmi //R-Addr: 0X0130
ld4 r16=[r17];; //16 cc:3
adds r15=-1, r16 //16 cc:4
nop.i 0;;
}
{ .mmi //R-Addr: 0X0140
st4 [r9]=r15;; //16 cc:5
nop.m 0
nop.i 0;;
}
$LN3@MyDoMinus6:
// 17 : }
// 18 : }
{ .mmb //R-Addr: 0X0150
adds sp=16, sp //18 cc:0
nop.m 0
br.ret.sptk.many b0;; //18 cc:0
}
// End code for function:
.endp MyDoMinus64#
.type myGetRDTSC32# ,@function
.global myGetRDTSC32#
// Function compile flags: /Odtp
.section .text
// Begin code for function: myGetRDTSC32:
.proc myGetRDTSC32#
.align 32
pbeginTime64$ = 0
myGetRDTSC32:
// pbeginTime64$ = r32
// Output regs: None
// 69 : }
{ .mmi //R-Addr: 0X00
adds r31=pbeginTime64$, sp;;
st8 [r31]=r32
nop.i 0;;
}
{ .mmb //R-Addr: 0X010
nop.m 0
nop.m 0
br.ret.sptk.many b0;; //69 cc:0
}
// End code for function:
.endp myGetRDTSC32#
.type BeginCountRdtsc# ,@function
.global BeginCountRdtsc#
// Function compile flags: /Odtp
.section .text
// Begin code for function: BeginCountRdtsc:
.proc BeginCountRdtsc#
.align 32
pbeginTime64$ = 0
BeginCountRdtsc:
// pbeginTime64$ = r32
// Output regs: None
// 73 : }
{ .mmi //R-Addr: 0X00
adds r31=pbeginTime64$, sp;;
st8 [r31]=r32
nop.i 0;;
}
{ .mmb //R-Addr: 0X010
nop.m 0
nop.m 0
br.ret.sptk.many b0;; //73 cc:0
}
// End code for function:
.endp BeginCountRdtsc#
.type GetResRdtsc# ,@function
.global GetResRdtsc#
.section .pdata
$T80442: data4 @imagerel($LN3@GetResRdts#)
data4 @imagerel($LN3@GetResRdts#+64)
data4 @imagerel($T80440#)
.section .xdata
.skip 8
$T80440: data2 03H
data2 00H
data4 01H
string "\x04" //R1:prologue size 4
string "\xe0\x00\x01" //P7:mem_stack_f time 0 size 1
string "\x28" //R1:body size size 8
string "\x81" //B1:label_state 1
string "\xc0\x01" //B2:ecount 0 time 1
// Function compile flags: /Odtp
.section .text
// Begin code for function: GetResRdtsc:
.proc GetResRdtsc#
.align 32
lr$ = 0
fComputeTimeQueryPerf$ = 24
GetResRdtsc:
// fComputeTimeQueryPerf$ = r33
// Output regs: None
$LN3@GetResRdts:
// 76 : {
// 77 : LARGE_INTEGER lr;
// 78 : lr.QuadPart=0;
// 79 : return lr;
// 80 : }
{ .mmi //R-Addr: 0X00
adds sp=-16, sp;; //76 cc:0
adds r31=fComputeTimeQueryPerf$, sp
nop.i 0;;
}
{ .mmi //R-Addr: 0X010
st4 [r31]=r33;;
adds r30=lr$, sp //78 cc:0
nop.i 0;;
}
{ .mmi //R-Addr: 0X020
st8 [r30]=r0;; //78 cc:1
adds r29=lr$, sp //79 cc:0
nop.i 0;;
}
{ .mmb //R-Addr: 0X030
ld8 r8=[r29] //79 cc:2
adds sp=16, sp //80 cc:0
br.ret.sptk.many b0;; //80 cc:0
}
// End code for function:
.endp GetResRdtsc#
.type BeginCountPerfCounter# ,@function
.global BeginCountPerfCounter#
.type __imp_GetTickCount# ,@function
.global __imp_GetTickCount#
.type __imp_QueryPerformanceCounter# ,@function
.global __imp_QueryPerformanceCounter#
.section .pdata
$T80450: data4 @imagerel($LN5@BeginCount#)
data4 @imagerel($LN5@BeginCount#+384)
data4 @imagerel($T80448#)
.section .xdata
.skip 16
$T80448: data2 03H
data2 00H
data4 03H
string "\x0a" //R1:prologue size 10
string "\xe6\x00" //P7:pfs_when time 0
string "\xb1\x23" //P3:pfs_gr 35
string "\xe0\x01\x02" //P7:mem_stack_f time 1 size 2
string "\xe4\x02" //P7:rp_when time 2
string "\xb0\xa2" //P3:rp_gr 34
string "\x61\x3e" //R3:body size 62
string "\x81" //B1:label_state 1
string "\xc0\x05" //B2:ecount 0 time 5
string "\x00\x00\x00\x00\x00\x00\x00" //padding
// Function compile flags: /Odtp
.section .text
// Begin code for function: BeginCountPerfCounter:
.proc BeginCountPerfCounter#
.align 32
$T80446 = 16
$T80447 = 20
pbeginTime64$ = 32
fComputeTimeQueryPerf$ = 40
BeginCountPerfCounter:
// pbeginTime64$ = r32
// fComputeTimeQueryPerf$ = r33
// Output regs: r37-r37
$LN5@BeginCount:
// 85 : {
// 86 : if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(pbeginTime64)))
{ .mmi //R-Addr: 0X00
alloc r35=2, 3, 1, 0 //85 cc:0
adds sp=-32, sp //85 cc:0
mov r34=b0 //85 cc:0
}
{ .mmi //R-Addr: 0X010
mov r36=gp;; //85 cc:0
ld8.nta r2=[sp] //85 cc:1
adds r31=pbeginTime64$, sp
}
{ .mmi //R-Addr: 0X020
adds r30=fComputeTimeQueryPerf$, sp;;
st8 [r31]=r32
nop.i 0
}
{ .mmi //R-Addr: 0X030
st4 [r30]=r33;;
adds r29=fComputeTimeQueryPerf$, sp //86 cc:0
nop.i 0;;
}
{ .mmi //R-Addr: 0X040
ld4 r28=[r29];; //86 cc:1
cmp4.eq.unc p14,p15=r0, r28 //86 cc:2
nop.i 0
}
{ .mmb //R-Addr: 0X050
nop.m 0
nop.m 0
(p14) br.cond.dptk.few $LN1@BeginCount#;; //86 cc:2
}
// 86 : if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(pbeginTime64)))
{ .mib //R-Addr: 0X060
addl r26=@gprel(__imp_QueryPerformanceCounter#),gp //86 cc:3
adds r27=pbeginTime64$, sp //86 cc:3
nop.b 0;;
}
{ .mmb //R-Addr: 0X070
ld8 r25=[r26] //86 cc:4
ld8 r37=[r27] //86 cc:4
nop.b 0;;
}
{ .mmi //R-Addr: 0X080
ld8 r22=[r25], 8;; //86 cc:6
ld8 gp=[r25] //86 cc:7
mov b7=r22 //86 cc:7
}
{ .mmb //R-Addr: 0X090
nop.m 0
nop.m 0
br.call.dptk.many b0=b7;; //86 cc:7
}
{ .mmi //R-Addr: 0X0a0
adds r21=$T80446, sp //86 cc:18
adds r20=$T80446, sp //86 cc:18
mov gp=r36;; //86 cc:18
}
{ .mmb //R-Addr: 0X0b0
st4 [r21]=r8 //86 cc:19
ld4 r19=[r20] //86 cc:19
nop.b 0;;
}
{ .mmb //R-Addr: 0X0c0
cmp4.ne.unc p14,p15=r0, r19 //86 cc:20
nop.m 0
(p14) br.cond.dptk.few $LN3@BeginCount#;; //86 cc:20
}
$LN1@BeginCount:
// 87 : {
// 88 : pbeginTime64->LowPart = GetTickCount();
// 89 : pbeginTime64->HighPart = 0;
{ .mmi //R-Addr: 0X0d0
addl r18=@gprel(__imp_GetTickCount#),gp;; //88 cc:0
ld8 r17=[r18] //88 cc:1
nop.i 0;;
}
{ .mmi //R-Addr: 0X0e0
ld8 r16=[r17], 8;; //88 cc:3
ld8 gp=[r17] //88 cc:4
mov b6=r16 //88 cc:4
}
{ .mmb //R-Addr: 0X0f0
nop.m 0
nop.m 0
br.call.dptk.many b0=b6;; //88 cc:4
}
{ .mmi //R-Addr: 0X0100
adds r15=$T80447, sp //88 cc:15
adds r11=$T80447, sp //88 cc:15
adds r9=pbeginTime64$, sp //88 cc:15
}
{ .mmi //R-Addr: 0X0110
mov gp=r36;; //88 cc:15
st4 [r15]=r8 //88 cc:16
nop.i 0
}
{ .mmb //R-Addr: 0X0120
ld4 r10=[r11] //88 cc:16
ld8 r8=[r9] //88 cc:16
nop.b 0;;
}
{ .mmi //R-Addr: 0X0130
st4 [r8]=r10;; //88 cc:17
adds r31=pbeginTime64$, sp //89 cc:0
nop.i 0;;
}
{ .mmi //R-Addr: 0X0140
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -