1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown # many thanks to David Fang 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown # for providing an OSX 10.5 machine to test on 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown # count for 1 million instructions 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown # total is 1 + 1 + 499997*2 + 4 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown .globl _start 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown_start: 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown xor %ecx,%ecx # not needed, pads total to 1M 10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown mov $499997,%ecx # load counter 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntest_loop: 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown dec %ecx # repeat count times 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown jnz test_loop 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown #================================ 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown # Exit 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown #================================ 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown # syscall numbers in /usr/include/sys/syscall.h on OSX 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown # in arc/x86/include/asm/unistd_32.h on Linux 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown # disassemble on OSX otool -tV 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownexit: 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifdef VGO_darwin 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown pushl $0 # we return 0 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown xor %eax,%eax 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown inc %eax # put exit syscall number (1) in eax 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown int $0x80 # and exit 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#else 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown xor %ebx,%ebx # we return 0 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown xor %eax,%eax 31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown inc %eax # put exit syscall number (1) in eax 32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown int $0x80 # and exit 33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif 34