pr21291.c

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

C
37
字号
/* The asm has 2 "r" in/out operands, 1 earlyclobber "r" output, 1 "r"   input and 2 fixed "r" clobbers (eax and edx), so there are a total of   6 registers that must not conflict.  Add to that the PIC register,   the frame pointer, and the stack pointer, and we've run out of   registers on 32-bit targets.  *//* { dg-do compile } *//* { dg-options "-O" } */typedef unsigned long bngdigit;typedef bngdigit *bng;typedef unsigned int bngcarry;typedef unsigned long bngsize;bngdigitbng_ia32_mult_sub_digit (bng a, bngsize alen, bng b, bngsize blen, bngdigit d){  bngdigit out, tmp;  bngcarry carry;  bngdigit a11;  alen -= blen;  out = 0;  asm (""       : "+r" (a), "+r" (b), "+mr" (blen), "+mr" (out), "=&r" (tmp)       : "mr" (d)       : "eax", "edx");  if (alen == 0)    {      a11 = out;      goto t;    }  a11 = 1; t:  return a11;}

⌨️ 快捷键说明

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