// // INC64.C // // 09/28/2007 darekm Increment test code for Windows and Mac OS X // #include // Older versions of Visual C/C++ didn't support 'long long' type #if !defined(_MSC_VER) || (_MSC_VER >= 1400) typedef long long long64; typedef int long32; #else typedef __int64 long64; typedef __int32 long32; #endif // Visual C/C++ requires double underscore #if !defined(_MSC_VER) #define INLINE inline // #include #else #define INLINE __inline #endif void INLINE inc64i(volatile long64 *pq) { pq[0] += 1; pq[1] += 1; } void inc64(volatile long64 *pq) { pq[0] += 1; pq[1] += 1; } void INLINE inc32i(volatile long32 *pl) { pl[0] += 1; pl[1] += 1; } void inc32(volatile long32 *pl) { pl[0] += 1; pl[1] += 1; } volatile long32 rgl[2]; volatile long64 rgq[2]; void test_loop() { int i; // just over a billion iterations for (i = 0; i < 0x40000000; i++) { inc32i(&rgl[0]); inc64i(&rgq[0]); } } int main (int argc, const char * argv[]) { rgl[0] = 0x100; rgl[1] = 0x200; rgq[0] = 0x300; rgq[1] = 0x400; printf("Inc test! long32 is %d bytes, long64 is %d bytes\n", sizeof(long32), sizeof(long64)); // printf("time = %08X\n", TickCount()); test_loop(); printf("rgl = %08X %08X\n", (long32)rgl[0], (long32)rgl[1]); printf("rgq = %08X %08X\n", (long32)rgq[0], (long32)rgq[1]); return 0; }