AVR rozkaz w asm



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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