1dbebecc2bf00530ce09b3658641d1514d807aeeenjn # many thanks to David Fang 2dbebecc2bf00530ce09b3658641d1514d807aeeenjn # for providing an OSX 10.5 machine to test on 3dbebecc2bf00530ce09b3658641d1514d807aeeenjn 4dbebecc2bf00530ce09b3658641d1514d807aeeenjn # count for 1 million instructions 5dbebecc2bf00530ce09b3658641d1514d807aeeenjn # total is 1 + 1 + 499997*2 + 4 6dbebecc2bf00530ce09b3658641d1514d807aeeenjn 7dbebecc2bf00530ce09b3658641d1514d807aeeenjn .globl _start 8dbebecc2bf00530ce09b3658641d1514d807aeeenjn_start: 9dbebecc2bf00530ce09b3658641d1514d807aeeenjn xor %ecx,%ecx # not needed, pads total to 1M 10dbebecc2bf00530ce09b3658641d1514d807aeeenjn mov $499997,%ecx # load counter 11dbebecc2bf00530ce09b3658641d1514d807aeeenjntest_loop: 12dbebecc2bf00530ce09b3658641d1514d807aeeenjn dec %ecx # repeat count times 13dbebecc2bf00530ce09b3658641d1514d807aeeenjn jnz test_loop 14dbebecc2bf00530ce09b3658641d1514d807aeeenjn 15dbebecc2bf00530ce09b3658641d1514d807aeeenjn #================================ 16dbebecc2bf00530ce09b3658641d1514d807aeeenjn # Exit 17dbebecc2bf00530ce09b3658641d1514d807aeeenjn #================================ 18dbebecc2bf00530ce09b3658641d1514d807aeeenjn 19dbebecc2bf00530ce09b3658641d1514d807aeeenjn # syscall numbers in /usr/include/sys/syscall.h on OSX 20dbebecc2bf00530ce09b3658641d1514d807aeeenjn # in arc/x86/include/asm/unistd_32.h on Linux 21dbebecc2bf00530ce09b3658641d1514d807aeeenjn # disassemble on OSX otool -tV 22dbebecc2bf00530ce09b3658641d1514d807aeeenjnexit: 23dbebecc2bf00530ce09b3658641d1514d807aeeenjn xor %eax,%eax 24dbebecc2bf00530ce09b3658641d1514d807aeeenjn inc %eax # put exit syscall number (1) in eax 258eb8bab992e3998c33770b0cdb16059a8b918a06sewardj#if defined(VGO_darwin) 268eb8bab992e3998c33770b0cdb16059a8b918a06sewardj pushl $0 # we return 0 278eb8bab992e3998c33770b0cdb16059a8b918a06sewardj int $0x80 # and exit 288eb8bab992e3998c33770b0cdb16059a8b918a06sewardj#elif defined(VGO_linux) 29dbebecc2bf00530ce09b3658641d1514d807aeeenjn xor %ebx,%ebx # we return 0 308eb8bab992e3998c33770b0cdb16059a8b918a06sewardj int $0x80 # and exit 318eb8bab992e3998c33770b0cdb16059a8b918a06sewardj#elif defined(VGO_solaris) 328eb8bab992e3998c33770b0cdb16059a8b918a06sewardj pushl $0 # we return 0 338eb8bab992e3998c33770b0cdb16059a8b918a06sewardj int $0x91 # and exit 348eb8bab992e3998c33770b0cdb16059a8b918a06sewardj#else 358eb8bab992e3998c33770b0cdb16059a8b918a06sewardj# error "Unknown OS" 36dbebecc2bf00530ce09b3658641d1514d807aeeenjn#endif 37