asm-4.c

来自「用于进行gcc测试」· C语言 代码 · 共 48 行

C
48
字号
/* Test if functions marked __attribute__((used)), but with address never   taken in C code, don't use alternate calling convention for local   functions on IA-32.  *//* { dg-do run } *//* The asm in this test uses an absolute address.  *//* { dg-require-effective-target nonpic } *//* { dg-options "-O2" } */extern void abort (void);static int foo (int, int, int, int) __asm ("foo");static __attribute__((noinline, used)) intfoo (int i, int j, int k, int l){  return i + j + k + l;}voidbar (void){  if (foo (1, 2, 3, 4) != 10)    abort ();}int (*fn) (int, int, int, int);voidbaz (void){  /* Darwin loads 64-bit regions above the 4GB boundary so     we need to use this instead.  */#if defined (__LP64__) && defined (__MACH__)  __asm ("leaq foo(%%rip), %0" : "=r" (fn));#else  __asm ("movl $foo, %k0" : "=r" (fn));#endif  if (fn (2, 3, 4, 5) != 14)    abort ();}intmain (void){  bar ();  baz ();  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?