⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testzlib.asm

📁 zlib dll in wince 5.0 parfrom
💻 ASM
📖 第 1 页 / 共 5 页
字号:
// 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 + -