Zmienne między c a asm



Masz problem? Zapytaj na forum elektroda.pl

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



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





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




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

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