MASM32 Downloads
another option is to compare the value of the last byte when you call the procif it isn't FFh, you call the routine to build the tablethat way, it gets built automatically the first time you call itnow - as for 3 or 4 or more bits....you never said anything about that ;)we can't read your mind - lol
OPTION PROLOGUE:None OPTION EPILOGUE:NoneBitDbl PROC dwVal:DWORD cmp byte ptr waBdLut+511,0FFh jz BitDb0 call InitBdLutBitDb0: movzx eax,byte ptr [esp+5] mov ecx,offset waBdLut dec eax movzx edx,byte ptr [esp+4] mov eax,[ecx+2*eax] mov ax,[ecx+2*edx] ret 4BitDbl ENDP OPTION PROLOGUE:PrologueDef OPTION EPILOGUE:EpilogueDef
push ebx push esi sub eax,eax mov edx,[esp+12] mov ecx,[esp+16] mov ebx,11b@@: sub esi,esi bt edx,0 cmovc esi,ebx shr edx,1 or eax,esi shl ebx,2 sub ecx,1 jnz @b pop esi pop ebx ret 8
Intel(R) Celeron(R) CPU 2.13GHz (SSE3)165 cycles for 1198 cycles for 1.2 (dec ecx)74 cycles for 2 (universal scaling proc) CMOV108 cycles for 2.1 (universal scaling proc) i386100 cycles for sinsi's76 cycles for sinsi's mod76 cycles for sinsi's mod 284 cycles for sinsi's mod 3 (AMD)98 cycles for sinsi's mod 4 (AMD)165 cycles for 1200 cycles for 1.2 (dec ecx)73 cycles for 2 (universal scaling proc) CMOV109 cycles for 2.1 (universal scaling proc) i38699 cycles for sinsi's76 cycles for sinsi's mod76 cycles for sinsi's mod 282 cycles for sinsi's mod 3 (AMD)81 cycles for sinsi's mod 4 (AMD)164 cycles for 1197 cycles for 1.2 (dec ecx)74 cycles for 2 (universal scaling proc) CMOV108 cycles for 2.1 (universal scaling proc) i386100 cycles for sinsi's76 cycles for sinsi's mod76 cycles for sinsi's mod 282 cycles for sinsi's mod 3 (AMD)81 cycles for sinsi's mod 4 (AMD)--- ok ---
Intel(R) Pentium(R) 4 CPU 3.00GHz (SSE3)167 cycles for 1197 cycles for 1.2 (dec ecx)79 cycles for 2 (universal scaling proc) CMOV108 cycles for 2.1 (universal scaling proc) i386100 cycles for sinsi's76 cycles for sinsi's mod76 cycles for sinsi's mod 282 cycles for sinsi's mod 3 (AMD)81 cycles for sinsi's mod 4 (AMD)167 cycles for 1197 cycles for 1.2 (dec ecx)76 cycles for 2 (universal scaling proc) CMOV108 cycles for 2.1 (universal scaling proc) i38699 cycles for sinsi's76 cycles for sinsi's mod76 cycles for sinsi's mod 282 cycles for sinsi's mod 3 (AMD)85 cycles for sinsi's mod 4 (AMD)167 cycles for 1197 cycles for 1.2 (dec ecx)75 cycles for 2 (universal scaling proc) CMOV108 cycles for 2.1 (universal scaling proc) i386100 cycles for sinsi's76 cycles for sinsi's mod76 cycles for sinsi's mod 282 cycles for sinsi's mod 3 (AMD)81 cycles for sinsi's mod 4 (AMD)
Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz (SSE4)129 cycles for 1100 cycles for 1.2 (dec ecx)86 cycles for 2 (universal scaling proc) CMOV102 cycles for 2.1 (universal scaling proc) i38690 cycles for sinsi's88 cycles for sinsi's mod98 cycles for sinsi's mod 279 cycles for sinsi's mod 3 (AMD)78 cycles for sinsi's mod 4 (AMD)100 cycles for 1129 cycles for 1.2 (dec ecx)93 cycles for 2 (universal scaling proc) CMOV84 cycles for 2.1 (universal scaling proc) i386101 cycles for sinsi's98 cycles for sinsi's mod84 cycles for sinsi's mod 277 cycles for sinsi's mod 3 (AMD)80 cycles for sinsi's mod 4 (AMD)126 cycles for 195 cycles for 1.2 (dec ecx)87 cycles for 2 (universal scaling proc) CMOV102 cycles for 2.1 (universal scaling proc) i38683 cycles for sinsi's83 cycles for sinsi's mod98 cycles for sinsi's mod 249 cycles for sinsi's mod 3 (AMD)82 cycles for sinsi's mod 4 (AMD)--- ok ---
;Flexible Bit Stretcher - DednDave - 1, 2013;; Creates variable-multiples of bits from an input word.;The repeat count for each input bit is derived as follows:; (1) high-order count bit from high word of wParam; (2) low-order count bits from lParam;These 3 bits allow for individual repeat counts of 0 to 7 for each input bit.
00001h: 496 498 498 497 497000FFh: 593 594 593 590 6130AAAAh: 596 598 599 596 5990FF00h: 593 595 594 592 5930FFFFh: 640 639 641 640 641
00001h: 538 540 523 524 530000FFh: 617 618 618 623 6240AAAAh: 633 636 647 630 6310FF00h: 639 624 638 641 6450FFFFh: 679 674 678 675 674Press any key to continue ...