Treat the register named reg as a fixed register; generated code should never refer to it (except perhaps as a stack pointer, frame pointer or in some other fixed role).
这可以用更简单的方式复制理查德的答案,
int main() {
register int i asm("ebx");
return i + 1;
}
虽然这是没有意义,因为你不知道ebx寄存器是什么。
如果你把这两个,用gcc -ffixed-ebx编译,
#include
register int counter asm("ebx");
void check(int n) {
if (!(n % 2 && n % 3 && n % 5)) counter++;
}
int main() {
int i;
counter = 0;
for (i = 1; i <= 100; i++) check(i);
printf("%d Hamming numbers between 1 and 100\n", counter);