AVR rozkaz w asm
Masz problem? Zapytaj na forum elektroda.pl
From: "Przemek" <cibor_at_nospam_zsem.waw.ids.pl>
Subject: AVR rozkaz w asm
Date: Sat, 1 Mar 2003 10:00:17 +0100
Witam. Mam program w C (CodeVision) i robie wstawki w asemblerze. O ile sie
nie myle to rozkaz RET i IRET bierze ze stosu adres nastepnego rozkazu. Ja
chce przed IRET umiescic na stosie adres jakiejs funkcji. I tu moje pytanie
jak obliczyc adres jakiejs funkcji w C.
Pozdrawiam Przemek Ciborowski.
========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.nask.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Przemek" <cibor_at_nospam_zsem.waw.ids.pl>
Subject: Re: AVR rozkaz w asm
Date: Sat, 1 Mar 2003 10:11:02 +0100
Witam. Mam program w C (CodeVision) i robie wstawki w asemblerze. O ile
sie
nie myle to rozkaz RET i IRET bierze ze stosu adres nastepnego rozkazu. Ja
chce przed IRET umiescic na stosie adres jakiejs funkcji. I tu moje
pytanie
jak obliczyc adres jakiejs funkcji w C.
Pozdrawiam Przemek Ciborowski.
Pytanie doyczy ATMega128. Tzn najlepiej cos w rodzaju rozkazu gdzie podaje
mu nazwe funkcji a on mi np w rejestrze zwraca jej adres, to potem push ten
rejestr i iret.
========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.astercity.net!not-for-mai
From: Adam Dybkowski <adybkows_at_nospam_amwaw.edu.pl>
Subject: Re: AVR rozkaz w asm
Date: Sat, 01 Mar 2003 16:40:02 +0100
Przemek wrote:
jak obliczyc adres jakiejs funkcji w C.
Pytanie doyczy ATMega128. Tzn najlepiej cos w rodzaju rozkazu gdzie podaje
mu nazwe funkcji a on mi np w rejestrze zwraca jej adres, to potem push ten
rejestr i iret.
Adres funkcji w C zapisuje się po prostu jako nazwę funkcji albo jako
nazwę funkcji poprzedzoną ampersandem (&). Oba rozwiązania są równoważne.
Polecam poczytać np: http://www.function-pointer.org/
Ostatnio na ATmega8 wywoływałem funkcję z przerwania timera na podstawie
jej adresu (wskaźnik funkcji zapamiętywany w zmiennej globalnej).
Zadziałało jak trzeba - GCC wygenerował rozkazy załadowania adresu
funkcji ze zmiennej do R30,R31 (Z) oraz ICALL.
--
Adam Dybkowski
adybkows_at_nospam_amwaw.edu.pl
http://www.amwaw.edu.pl/~adybkows
========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.onet.pl!not-for-mai
From: jfox_at_nospam_poczta.onet.pl (J.F.)
Subject: Re: AVR rozkaz w asm
Date: Sun, 02 Mar 2003 20:26:30 GMT
On Sat, 1 Mar 2003 10:00:17 +0100, Przemek wrote:
Witam. Mam program w C (CodeVision) i robie wstawki w asemblerze. O ile sie
nie myle to rozkaz RET i IRET bierze ze stosu adres nastepnego rozkazu. Ja
chce przed IRET umiescic na stosie adres jakiejs funkcji. I tu moje pytanie
jak obliczyc adres jakiejs funkcji w C.
jesli nie zadziala adr=funkcja ani adr=&funkcja, to chyba przyjdzie
sie zdac na assembler i linker: Mov ...,_funkcja, czy jaki tam jest
zapis zeby stala zaladowac.
Aha - wywolanie funkcji moze wymagac paru dodatkowych informacji,
poza tym na stosie trzeba jeszcze adres powrotu dla tej funkcji
umiescic ..
J.
========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!news.onet.pl!not-for-mai