Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
AVR STUDIO - ASM
JaHo Offline
Nowicjusz
*

Liczba postów: 35
Dołączył: 24-06-2011
Post: #19
RE: AVR STUDIO - ASM
Znalazłem opis: "AVR Libc - FAQ - What registers are used by the C compiler?" który skrótowo podaje "calling conventions" używane przez avr gcc.
Parametry wejściowe do procedur przekazywane są przez rejestry r25 do r8, a jeśli braknie rejestrów to kolejne argumenty umieszczane są na "stosie maszynowym" (podobnie jak i wszelkie argumenty których nie da się "upchnąć" w rejestry).
Rezultat zwracany jest w określonych rejestrach (r25 do r18, zależnie od typu rezultatu).
"Zmienne lokalne" procedur umieszczane są w "wolnych" rejestrach a jeśli takowych zabraknie to na "stosie maszynowym", gdzie procedura dostanie zaalokowane miejsce na swoje "zmienne lokalne" i wskaźnik do tego miejsca (na "stosie maszynowym") przekazany będzie w rejestrach r29:r28 (wskaźnik "Y", tzw. "frame pointer").
Reasumując, istnieje jeden jedyny "stos maszynowy" który służy zarówno do przechowywania adresów powrotu z procedur i przerwań jak i jako miejsce do zachowywania używanych w tych procedurach i przerwaniach rejestrów jak i do przekazywania argumentów między procedurami oraz jako miejsce dla "zmiennych lokalnych" procedur.
Nie ma ŻADNEGO zabezpieczenia ani ochrony danych umieszczonych na stosie ... dowolna procedura, albo na skutek błędu albo celowo, może "nadpisać" zawartość stosu i w ten sposób zmienić "bieg programu".
(PS. Mocno bym się zdziwił gdyby się okazało że kompilator C CodeVision stosuje znacząco inne "calling conventions", bo te używane przez avr gcc wydają się być bardzo sensowne i dobrze dopasowane do małych procków z niewielką ilością RAM.)
(Ten post był ostatnio modyfikowany: 12-04-2012 10:31 przez JaHo.)
12-04-2012 10:29
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
AVR STUDIO - ASM - SQ6ADE - 14-10-2010, 0:06
RE: AVR STUDIO - ASM - SP5FCS - 14-10-2010, 22:39
RE: AVR STUDIO - ASM - SQ6ADE - 15-10-2010, 21:04
RE: AVR STUDIO - ASM - SQ6ADE - 28-10-2010, 21:55
RE: AVR STUDIO - ASM - SQ6OXK - 28-10-2010, 23:53
RE: AVR STUDIO - ASM - SP9FKP - 14-11-2010, 14:36
RE: AVR STUDIO - ASM - SP9FKP - 02-12-2010, 8:47
RE: AVR STUDIO - ASM - SQ6ADE - 02-12-2010, 14:08
RE: AVR STUDIO - ASM - SP4EJT - 10-04-2012, 15:11
RE: AVR STUDIO - ASM - SP5FCS - 10-04-2012, 22:22
RE: AVR STUDIO - ASM - JaHo - 10-04-2012, 16:52
RE: AVR STUDIO - ASM - SP4EJT - 10-04-2012, 19:05
RE: AVR STUDIO - ASM - SQ6ADE - 10-04-2012, 19:10
RE: AVR STUDIO - ASM - SP4EJT - 10-04-2012, 19:31
RE: AVR STUDIO - ASM - SQ6ADE - 10-04-2012, 20:48
RE: AVR STUDIO - ASM - SQ6ADE - 10-04-2012, 22:25
RE: AVR STUDIO - ASM - JaHo - 11-04-2012, 22:09
RE: AVR STUDIO - ASM - SP5FCS - 11-04-2012, 23:02
RE: AVR STUDIO - ASM - JaHo - 12-04-2012 10:29
RE: AVR STUDIO - ASM - SP5FCS - 12-04-2012, 12:44
RE: AVR STUDIO - ASM - JaHo - 12-04-2012, 16:03

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości