?? arm-isr.c
字號:
#ifndef __thumb__/* There used to be a couple of bugs in the ARM's prologue and epilogue generation for ISR routines. The wrong epilogue instruction would be generated to restore the IP register if it had to be pushed onto the stack, and the wrong offset was being computed for local variables if r0 - r3 had to be saved. This tests for both of these cases. */int z = 9;intbar (void){ return z;}intfoo (int a, int b, int c, int d, int e, int f, int g, int h){ volatile int i = (a + b) - (g + h) + bar (); volatile int j = (e + f) - (c + d); return a + b + c + d + e + f + g + h + i + j;}int foo1 (int a, int b, int c, int d, int e, int f, int g, int h) __attribute__ ((interrupt ("IRQ")));intfoo1 (int a, int b, int c, int d, int e, int f, int g, int h){ volatile int i = (a + b) - (g + h) + bar (); volatile int j = (e + f) - (c + d); return a + b + c + d + e + f + g + h + i + j;}#endifintmain (void){#ifndef __thumb__ if (foo (1, 2, 3, 4, 5, 6, 7, 8) != 32) abort (); if (foo1 (1, 2, 3, 4, 5, 6, 7, 8) != 32) abort ();#endif exit (0);}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -