Какие регистры нужно сохранить в соглашении о вызовах ARM C?
Прошло много времени с тех пор, как я последний раз собирал кодовые манипуляторы, и я немного заржавел в деталях. Если я вызываю функцию C с руки, мне остается только беспокоиться о сохранении r0-r3 и lr, верно?
Если функция C использует какие-либо другие регистры, отвечает ли она за сохранение этих данных в стеке и их восстановление? Другими словами, компилятор сгенерирует код, чтобы сделать это для C-функций.
Например, если я использую r10 в функции ассемблера, мне не нужно помещать его значение в стек или в память и вставлять / восстанавливать его после вызова C, не так ли?
Это для arm-eabi-gcc 4.3.0.