Microsoft Visual C/C++ (VS2003) compiler output using -O2 (optimize for speed) switch, x86 Pentium Pro -G6 target: Non-inline functions: ; Function compile flags: /Ogty _TEXT SEGMENT _pq$ = 8 ; size = 4 _inc64i PROC NEAR ; COMDAT ; 31 : pq[0] += 1; 00000 8b 44 24 04 mov eax, DWORD PTR _pq$[esp-4] 00004 8b 08 mov ecx, DWORD PTR [eax] 00006 8b 50 04 mov edx, DWORD PTR [eax+4] 00009 83 c1 01 add ecx, 1 0000c 83 d2 00 adc edx, 0 0000f 89 08 mov DWORD PTR [eax], ecx 00011 89 50 04 mov DWORD PTR [eax+4], edx ; 32 : pq[1] += 1; 00014 8b 48 08 mov ecx, DWORD PTR [eax+8] 00017 8b 50 0c mov edx, DWORD PTR [eax+12] 0001a 83 c1 01 add ecx, 1 0001d 83 d2 00 adc edx, 0 00020 89 48 08 mov DWORD PTR [eax+8], ecx 00023 89 50 0c mov DWORD PTR [eax+12], edx ; 33 : } 00026 c3 ret 0 _inc64i ENDP ; Function compile flags: /Ogty _TEXT SEGMENT _pl$ = 8 ; size = 4 _inc32i PROC NEAR ; COMDAT ; 43 : pl[0] += 1; 00000 8b 44 24 04 mov eax, DWORD PTR _pl$[esp-4] 00004 8b 08 mov ecx, DWORD PTR [eax] 00006 41 inc ecx 00007 89 08 mov DWORD PTR [eax], ecx ; 44 : pl[1] += 1; 00009 8b 50 04 mov edx, DWORD PTR [eax+4] 0000c 42 inc edx 0000d 89 50 04 mov DWORD PTR [eax+4], edx ; 45 : } 00010 c3 ret 0 _inc32i ENDP Inlined loop: ; 63 : { ; 64 : inc32i(&rgl[0]); 00010 8b 0d 00 00 00 00 mov ecx, DWORD PTR _rgl 00016 41 inc ecx 00017 89 0d 00 00 00 00 mov DWORD PTR _rgl, ecx 0001d 8b 15 04 00 00 00 mov edx, DWORD PTR _rgl+4 00023 42 inc edx 00024 89 15 04 00 00 00 mov DWORD PTR _rgl+4, edx ; 65 : inc64i(&rgq[0]); 0002a 8b 0d 00 00 00 00 mov ecx, DWORD PTR _rgq 00030 8b 15 04 00 00 00 mov edx, DWORD PTR _rgq+4 00036 83 c1 01 add ecx, 1 00039 83 d2 00 adc edx, 0 0003c 89 0d 00 00 00 00 mov DWORD PTR _rgq, ecx 00042 89 15 04 00 00 00 mov DWORD PTR _rgq+4, edx 00048 8b 0d 08 00 00 00 mov ecx, DWORD PTR _rgq+8 0004e 8b 15 0c 00 00 00 mov edx, DWORD PTR _rgq+12 00054 83 c1 01 add ecx, 1 00057 83 d2 00 adc edx, 0 0005b 89 0d 08 00 00 00 mov DWORD PTR _rgq+8, ecx 00061 89 15 0c 00 00 00 mov DWORD PTR _rgq+12, edx