Zmienne między c a asm
Masz problem? Zapytaj na forum elektroda.pl
From: "Andrzej" <profx_at_nospam_friko.internet.pl>
Subject: Zmienne między c a asm
Date: Fri, 17 Mar 2000 08:20:01 -0000
Powstał układ a program który rozpocząłem tworzyć w C przestał mie¶cić
się w 89s8252.
Zacząłem zamieniać procedury c na asm linkier sobie z tym radzi jeżeli
nie są przekazywane żadne zmienne, jednakże próba przekazania czego
kolwiek jako parametr nie powodzi się.
Chodzi mi o to a żeby na poziomie asm zadeklarować że jest to
procedura. Wiem że możliwe jest co¶ takiego jednakże nie pamiętam jak
to kiedy¶ uzyskałem a ów program jest dawno skasowany.
ICQ: 66942801
Andrzej.
From: "Wojtek Sujkowski" <wpsujkowski_at_nospam_qdnet.pl>
Subject: Re: Zmienne między c a asm
Date: Fri, 17 Mar 2000 20:55:47 +0100
Nie okresliles jednoznacznie czy twoj problem to
przekazywanie danych przy:
a) wywolaniu z poziomu asemblera procedur napisanych w C,
czy
b) wywolaniu z programu w C procedur napisanych w asemblerze
Zazwyczaj przekazywanie zmiennych miedzy procedurami
pisanymi w roznych jezykach odbywa sie przez stos i mysle,
ze tedy powinienes szukac rozwiazania.
Najszybciej to sprawdzisz robiac krotkie programy testowe i
ogladajac efekt kompilacji i laczenia edytujac kod wynikowy
w deasemblerze.
Wojtek
Andrzej napisał(a) w wiadomo¶ci:
<8asmbe$a24$1_at_nospam_korweta.task.gda.pl>...
Powstał układ a program który rozpocząłem tworzyć w C
przestał mie¶cić
się w 89s8252.
Zacząłem zamieniać procedury c na asm linkier sobie z tym
radzi jeżeli
nie są przekazywane żadne zmienne, jednakże próba
przekazania czego
kolwiek jako parametr nie powodzi się.
Chodzi mi o to a żeby na poziomie asm zadeklarować że jest
to
procedura. Wiem że możliwe jest co¶ takiego jednakże nie
pamiętam jak
to kiedy¶ uzyskałem a ów program jest dawno skasowany.
ICQ: 66942801
Andrzej.
From: "Jerzy Szczesiul" <Jerzy.Szczesiul_at_nospam_ep.com.pl>
Subject: Re: Zmienne między c a asm
Date: Sat, 18 Mar 2000 12:33:22 GMT
Hej
Andrzej napisał(a) w wiadomo¶ci: <8asmbe$a24$1_at_nospam_korweta.task.gda.pl>...
Powstał układ a program który rozpocząłem tworzyć w C przestał mie¶cić
się w 89s8252.
Zacząłem zamieniać procedury c na asm linkier sobie z tym radzi jeżeli
nie są przekazywane żadne zmienne, jednakże próba przekazania czego
kolwiek jako parametr nie powodzi się.
Zobacz w opisach kompilatora jak są przekazywane parametry do
funkcji ( tzn. gdzie są umieszczane podczas wywołania funkcji ), to
może być różnie - przez stos, przez rejestry. Je¶li piszesz funkcję
w C to kompilator sam 'wie' gdzie te parametry są - w assemblerze
musisz je wydostać ręcznie : np. je¶li przykładowo parametr char
będzie przekazany w R3 to procedura assemblerowa musi go sobie
stamtąd odczytać ( przy zmiennych wielobajtowych zobacz czy nie
jest odwrócona kolejno¶ć bajtów w C i asm ).
Tak samo jest ze zwrotem wyniku funkcji - assembler musi ulokować
wynik w standardowym miejscu żeby główny program w C umiał go
odczytać.
--
Pozdrowienia
Jurek Szczesiul
Jerzy.Szczesiul_at_nospam_ep.com.pl
From: "Maniek" <maniek_at_nospam_underweb.net>
Subject: Re: Zmienne między c a asm
Date: Mon, 20 Mar 2000 06:53:16 GMT
A o ile przekroczyles pojemnosc? Jesli o ~10% to mozna sprobowac
lopatologicznie:
kompilujesz do asemblera i
1. analizujesz skoki ljmp ->jak sie da to zamiana na ajmp lub sjmp (da sie
zredukowac kod o 30%)
2. optymalizujesz pedle for(C) - moj kompilator zawsze robil licznik 16bit
a mi starczylo 8
Sam pisze zawsze w asm wiec 64k jest trudno przekroczyc. Czesto jednak
robie "cos" w C, kompiluje do asm i optymalizuje recznie kod.
Pozdrawiam
#Maniek
From: belamy_at_nospam_free.net.pl
Subject: Re: Zmienne =?iso-8859-1?Q?mi=EAdzy?= c a asm
Date: Sat, 18 Mar 2000 19:20:32 GMT
Jakim kompilatorem kompilujesz ????
Andrzej wrote:
Powstał układ a program który rozpocząłem tworzyć w C przestał mie¶cić
się w 89s8252.
Zacząłem zamieniać procedury c na asm linkier sobie z tym radzi jeżeli
nie są przekazywane żadne zmienne, jednakże próba przekazania czego
kolwiek jako parametr nie powodzi się.
Chodzi mi o to a żeby na poziomie asm zadeklarować że jest to
procedura. Wiem że możliwe jest co¶ takiego jednakże nie pamiętam jak
to kiedy¶ uzyskałem a ów program jest dawno skasowany.
ICQ: 66942801
Andrzej.