Pracuję z zespołem ARM, gdzie muszę napisać jeden podprogram, dla którego podążam za konwencją wywołania ARM (to będzie musiało zostać zintegrowane z jakąś osobną implementacją wyższego poziomu gdzieś else) do przekazywania parametrów i zwracanych wartości. Teraz jest coś, czego ogólnie nie jestem pewien podczas pracy z zespołem.Przekazywanie parametrów i zwracanie wartości podprogramu w złożeniu
Tak więc od konwencji, jeśli dobrze rozumiem, argumenty są przekazywane w kolejności zaczynającej się od rejestrów r0 - r4, a następnie dla innych stosów argumentów są używane. Wartości zwracane są przekazywane do r0.
Oto, z czym jestem zdezorientowany. Jeśli mam zapisać kontekst r0 i wyskakuję po tym, nie ma możliwości zwrócenia wyniku, jedynym sposobem, w jaki można to zrobić, jest uszkodzenie pierwszego argumentu. Czy jest jakiś sposób obejścia tego problemu? Z góry dziękuję!
Domyślam się, że jest to obowiązkiem dzwoniącego, aby zapisać kontekst r0 przed wywołaniem funkcji. – as3rdaccount
Z opublikowanego linku: * "r0 do r3: służy do przechowywania wartości argumentów przekazywanych do podprogramu, a także do przechowywania wyników zwróconych przez podprogram" *. – m0skit0