📄 asm1.c
字号:
// Check that the 3.1 named operand syntax can be used in template functions.struct arg1 { int value; static const int info = 99;};struct arg2 { int value; static const int info = 11;};template<int j>int foo (void){ int i; asm ("# foo on %[third] %[second] %[fourth] %[first]" : [first] "=r" (i) : [second] "i" (j), [third] "i" (j + 2), [fourth] "i" (100)); return i;};template<class TYPE>TYPE bar (TYPE t){ asm ("# bar on %[first] %[second] %[third]" : [first] "=r" (t.value) : [second] "i[first]" (t.value), [third] "i" (t.info)); return t;}template<class TYPE>struct S { static void frob (TYPE t) { asm ("# frob on %[arg]" :: [arg] "i" (t.info)); }};void test (){ arg1 x; arg2 y; foo<42> (); bar (x); bar (y); S<arg1>::frob (x);}// { dg-final { scan-assembler "foo on" } }// { dg-final { scan-assembler "bar on" } }// { dg-final { scan-assembler "frob on" } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -