asm-block-2.c
来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 102 行
C
102 行
/* APPLE LOCAL file CW asm blocks *//* Test structure refs in asm-syntax blocks within functions. *//* { dg-do run { target powerpc*-*-darwin* } } *//* { dg-options "-fasm-blocks -O2" } */extern "C" void abort(void);typedef struct astruct { int arr[40]; char charfield; int fieldx;} atypedef;union aunion { int field1; int field2;};class aclass { public: double headfield; int intfield;};int fun1 (struct astruct *x){ int loc; asm { lwz loc, astruct.fieldx(x) addi loc, loc, 42 } return loc;}int fun2 (atypedef *x){ int loc; asm { lwz loc, atypedef.fieldx(r3) addi loc, loc, 43 } return loc;}int fun3(int arg){ int loc; asm { mr loc, r3 addi loc, loc, aunion.field1 } return loc;}int fun4 (struct astruct *arg){ int loc; asm { lbz loc, arg->charfield addi loc, loc, 1 } return loc;}int fun5 (aclass *x){ int loc; asm { lwz loc, aclass.intfield(x) addi loc, loc, 95 } return loc;}struct astruct glob;union uglob;intmain (){ aclass *localobj = new aclass; glob.charfield = 'b'; glob.fieldx = 22; if (fun1 (&glob) != 64) abort (); if (fun2 (&glob) != 65) abort (); if (fun3 (89) != 89) abort (); if (fun4 (&glob) != 'c') abort (); localobj->intfield = 55; if (fun5 (localobj) != 150) abort (); return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?