# HG changeset patch # User Shinji KONO # Date 1290012423 -32400 # Node ID 74701505c42daf99ea415b7d75cddf2c65b5fa64 # Parent ec9fdbb27351aefa9cc265c53600a6dd3633889b i64 switch diff -r ec9fdbb27351 -r 74701505c42d mc-code-i64.c --- a/mc-code-i64.c Thu Nov 18 01:08:52 2010 +0900 +++ b/mc-code-i64.c Thu Nov 18 01:47:03 2010 +0900 @@ -4544,7 +4544,8 @@ printf("\tja\t_%d\n",dlabel); if (delta==1) { #ifdef __APPLE__ - printf("\tmovq\t_%d-(%%rip,%s,8),%s\n",l,crn,crn); + printf("\tleaq\t_%d(%%rip),%%rbx\n",l); + printf("\tmovslq\t(%%rbx,%s,4),%s\n",crn,crn); printf("\taddq\t%%rbx,%s\n",crn); printf("\tjmp\t*%s\n",crn); #else @@ -4565,7 +4566,8 @@ printf("\tandl\t%%eax,%%edx\n"); printf("\tjne\t_%d\n",dlabel); #ifdef __APPLE__ - printf("\tmovq\t_%d-(%%rip,%s,6),%s\n",l,crn,crn); + printf("\tleaq\t_%d(%%rip),%%rbx\n",l); + printf("\tmovslq\t(%%rbx,%s,2),%s\n",crn,crn); printf("\taddq\t%%rbx,%s\n",crn); printf("\tjmp\t*%s\n",crn); #else @@ -4577,7 +4579,8 @@ printf("\tandl\t%%eax,%%edx\n"); printf("\tjne\t_%d\n",dlabel); #ifdef __APPLE__ - printf("\tmovq\t_%d-(%%ebx,%s,4),%s\n",l,crn,crn); + printf("\tleaq\t_%d(%%rip),%%rbx\n",l); + printf("\tmovslq\t(%%rbx,%s),%s\n",crn,crn); printf("\taddq\t%%rbx,%s\n",crn); printf("\tjmp\t*%s\n",crn); #else @@ -4590,7 +4593,8 @@ printf("\tandl\t%%edx,%%edx\n"); printf("\tjne\t_%d\n",dlabel); #ifdef __APPLE__ - printf("\tmovq\t_%d-(%%rbx,%s,8),%s\n",l,crn,crn); + printf("\tleaq\t_%d(%%rip),%%rbx\n",l); + printf("\tmovslq\t(%%rbx,%s,4),%s\n",crn,crn); printf("\taddq\t%%rbx,%s\n",crn); printf("\tjmp\t*%s\n",crn); #else