Надеюсь сделать svC# на c-код. Теперь я могу использовать сборку для получения значения svc.Cortex m3 svc с встроенной сборкой gcc
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
Not _needed_, но хорошая идея, потому что он не позволяет компилятору создать «нормальный» возврат в конце функции ('b lr'). Просто проверьте различия разборки при компиляции выше с/без него. –