>>255
Nope it should cost more clock cycles but it does something to my CPU and it makes it complete faster.
Maybe it ensures some pipeline integrity or forces some intermediates to be present in registers.
; Disassembly of file: abs.obj
; Sat Nov 05 19:49:12 2011
; Mode: 32 bits
; Syntax: MASM/ML
; Instruction set: Pentium
.586
.model flat
public _main
public _rdtsc ; Note: Communal. Not supported by MASM
extern _rand: near
extern _printf: near
extern _rdtsc: near
extern __acrtused_con: byte
FLAT GROUP
_TEXT SEGMENT DWORD PUBLIC 'CODE' ; section number 1
_main PROC NEAR
push ebp ; 0000 _ 55
mov ebp, esp ; 0001 _ 8B. EC
mov edx, 9 ; 0003 _ BA, 00000009
?_001: sub esp, 4096 ; 0008 _ 81. EC, 00001000
test dword ptr [esp], esp ; 000E _ 85. 24 24
dec edx ; 0011 _ 4A
jnz ?_001 ; 0012 _ 75, F4
sub esp, 3160 ; 0014 _ 81. EC, 00000C58
push ebx ; 001A _ 53
push esi ; 001B _ 56
push edi ; 001C _ 57
mov dword ptr [ebp-9C50H], 0 ; 001D _ C7. 85, FFFF63B0, 00000000
?_002: cmp dword ptr [ebp-9C50H], 10000 ; 0027 _ 81. BD, FFFF63B0, 00002710
jge ?_003 ; 0031 _ 7D, 28
call _rand ; 0033 _ E8, 00000000(rel)
mov ecx, 10000 ; 0038 _ B9, 00002710
cdq ; 003D _ 99
idiv ecx ; 003E _ F7. F9
add edx, -5000 ; 0040 _ 81. C2, FFFFEC78
mov eax, dword ptr [ebp-9C50H] ; 0046 _ 8B. 85, FFFF63B0
mov dword ptr [ebp+eax*4-9C40H], edx ; 004C _ 89. 94 85, FFFF63C0
inc dword ptr [ebp-9C50H] ; 0053 _ FF. 85, FFFF63B0
jmp ?_002 ; 0059 _ EB, CC
?_003: call _rdtsc ; 005B _ E8, 00000000(rel)
mov dword ptr [ebp-9C48H], eax ; 0060 _ 89. 85, FFFF63B8
mov dword ptr [ebp-9C44H], edx ; 0066 _ 89. 95, FFFF63BC
mov dword ptr [ebp-9C4CH], 0 ; 006C _ C7. 85, FFFF63B4, 00000000
?_004: cmp dword ptr [ebp-9C4CH], 10000 ; 0076 _ 81. BD, FFFF63B4, 00002710
jge ?_007 ; 0080 _ 7D, 1D
mov edx, dword ptr [ebp-9C4CH] ; 0082 _ 8B. 95, FFFF63B4
mov ebx, dword ptr [ebp+edx*4-9C40H] ; 0088 _ 8B. 9C 95, FFFF63C0
test ebx, ebx ; 008F _ 85. DB
jle ?_005 ; 0091 _ 7E, 02
jmp ?_006 ; 0093 _ EB, 02
?_005: neg ebx ; 0095 _ F7. DB
?_006: inc dword ptr [ebp-9C4CH] ; 0097 _ FF. 85, FFFF63B4
jmp ?_004 ; 009D _ EB, D7
?_007: call _rdtsc ; 009F _ E8, 00000000(rel)
sub eax, dword ptr [ebp-9C48H] ; 00A4 _ 2B. 85, FFFF63B8
sbb edx, dword ptr [ebp-9C44H] ; 00AA _ 1B. 95, FFFF63BC
push edx ; 00B0 _ 52
push eax ; 00B1 _ 50
push offset FLAT:?_010 ; 00B2 _ 68, 00000000(segrel)
call _printf ; 00B7 _ E8, 00000000(rel)
call _rdtsc ; 00BC _ E8, 00000000(rel)
mov dword ptr [ebp-9C48H], eax ; 00C1 _ 89. 85, FFFF63B8
mov dword ptr [ebp-9C44H], edx ; 00C7 _ 89. 95, FFFF63BC
add esp, 12 ; 00CD _ 83. C4, 0C
mov dword ptr [ebp-9C4CH], 0 ; 00D0 _ C7. 85, FFFF63B4, 00000000
?_008: cmp dword ptr [ebp-9C4CH], 10000 ; 00DA _ 81. BD, FFFF63B4, 00002710
jge ?_009 ; 00E4 _ 7D, 3C
mov esi, dword ptr [ebp-9C4CH] ; 00E6 _ 8B. B5, FFFF63B4
mov edi, dword ptr [ebp+esi*4-9C40H] ; 00EC _ 8B. BC B5, FFFF63C0
mov dword ptr [ebp-9C54H], edi ; 00F3 _ 89. BD, FFFF63AC
neg edi ; 00F9 _ F7. DF
mov ecx, dword ptr [ebp-9C54H] ; 00FB _ 8B. 8D, FFFF63AC
shr ecx, 31 ; 0101 _ C1. E9, 1F
shl edi, cl ; 0104 _ D3. E7
mov eax, dword ptr [ebp-9C54H] ; 0106 _ 8B. 85, FFFF63AC
mov ecx, eax ; 010C _ 89. C1
neg ecx ; 010E _ F7. D9
sbb ecx, 0 ; 0110 _ 83. D9, 00
shr ecx, 31 ; 0113 _ C1. E9, 1F
shl eax, cl ; 0116 _ D3. E0
add edi, eax ; 0118 _ 03. F8
inc dword ptr [ebp-9C4CH] ; 011A _ FF. 85, FFFF63B4
jmp ?_008 ; 0120 _ EB, B8
?_009: call _rdtsc ; 0122 _ E8, 00000000(rel)
sub eax, dword ptr [ebp-9C48H] ; 0127 _ 2B. 85, FFFF63B8
sbb edx, dword ptr [ebp-9C44H] ; 012D _ 1B. 95, FFFF63BC
push edx ; 0133 _ 52
push eax ; 0134 _ 50
push offset FLAT:?_011 ; 0135 _ 68, 00000034(segrel)
call _printf ; 013A _ E8, 00000000(rel)
xor eax, eax ; 013F _ 31. C0
add esp, 12 ; 0141 _ 83. C4, 0C
pop edi ; 0144 _ 5F
pop esi ; 0145 _ 5E
pop ebx ; 0146 _ 5B
leave ; 0147 _ C9
ret ; 0148 _ C3
_main ENDP
_TEXT ENDS
_DATA SEGMENT DWORD PUBLIC 'DATA' ; section number 2
?_010 label byte
db 7AH, 20H, 3DH, 20H, 61H, 72H, 72H, 5BH ; 0000 _ z = arr[
db 6AH, 5DH, 3EH, 30H, 3FH, 61H, 72H, 72H ; 0008 _ j]>0?arr
db 5BH, 6AH, 5DH, 3AH, 2DH, 61H, 72H, 72H ; 0010 _ [j]:-arr
db 5BH, 6AH, 5DH, 3BH, 20H, 20H, 20H, 20H ; 0018 _ [j];
db 43H, 79H, 63H, 6CH, 65H, 73H, 20H, 73H ; 0020 _ Cycles s
db 70H, 65H, 6EH, 74H, 3AH, 25H, 6CH, 6CH ; 0028 _ pent:%ll
db 75H, 0AH, 00H, 00H ; 0030 _ u...
?_011 label byte
db 20H, 7AH, 20H, 3DH, 20H, 28H, 28H, 2DH ; 0034 _ z = ((-
db 61H, 72H, 72H, 5BH, 6AH, 5DH, 29H, 3CH ; 003C _ arr[j])<
db 3CH, 28H, 61H, 72H, 72H, 5BH, 6AH, 5DH ; 0044 _ <(arr[j]
db 3CH, 30H, 29H, 29H, 2BH, 28H, 28H, 61H ; 004C _ <0))+((a
db 72H, 72H, 5BH, 6AH, 5DH, 29H, 3CH, 3CH ; 0054 _ rr[j])<<
db 28H, 61H, 72H, 72H, 5BH, 6AH, 5DH, 3EH ; 005C _ (arr[j]>
db 30H, 29H, 29H, 3BH, 20H, 43H, 79H, 63H ; 0064 _ 0)); Cyc
db 6CH, 65H, 73H, 20H, 73H, 70H, 65H, 6EH ; 006C _ les spen
db 74H, 3AH, 25H, 6CH, 6CH, 75H, 0AH, 00H ; 0074 _ t:%llu..
_DATA ENDS
CONST SEGMENT DWORD PUBLIC 'CONST' ; section number 3
CONST ENDS
_BSS SEGMENT DWORD PUBLIC 'BSS' ; section number 4
_BSS ENDS
_text$_rdtsc SEGMENT DWORD PUBLIC 'CODE' ; section number 5
; Communal section not supported by MASM
_rdtsc PROC NEAR
; COMDEF _rdtsc
rdtsc ; 0000 _ 0F 31
ret ; 0002 _ C3
_rdtsc ENDP
_text$_rdtsc ENDS
END