我希望將svc#編成c代碼。現在我可以使用程序集來佔用svc的值。cortex m3 svc with gcc inline assembly
SVC_Handler:
tst lr, #0x4
ite eq
mrseq r0, msp
mrsne r0, psp
b SVC_Handler_C
void SVC_Handler_C(unsigned int *svc_args)
{
unsigned int svc_number;
svc_number=((char *)svc_args[6])[-2];
但我希望將它翻譯成c代碼中的內聯彙編。但我發現sp會通過局部變量的函數輸入或其他東西來修改。有沒有可能解決這個問題?謝謝
如果你這樣寫,那麼也使它'__attribute __((noreturn))';-) –
你能否詳細說明爲什麼還需要屬性'noreturn'?謝謝。 – BlueSky
不是_needed_,但是一個好主意,因爲它阻止編譯器在函數末尾('b lr')創建「正常」返回。只要在編譯上面的/不使用它時檢查拆卸差異。 –