Hoe we kunnen bellen een C-functie uit Vergadering (8051)

S

sacrpio

Guest
Dear Friends,
Ik wilde weten hoe we u bellen met een C-functie van assembler programma met 8051 microcontroller.
Apple ...

 
I dont think thats mogelijk.Het hangt van assembler compiler (ik moet zeggen dat ik nog nooit gezien dat de optie in assembler, maar is zeer vaak omgekeerd te bellen assembler functies in C compiler).

Mr.Cube

 
Ya, ik denk dat dun is mogelijk kunt bellen C functie uit montage .... hehe ...

Maar ik weet dat we kunnen bellen Vergadering code uit C. ..Bijv.asm ( "t \ nop");

 
Hoi,

Zie hier:

h ** p: / / www.ke_il.com/support/docs/697.htm

* vervangen door T en verwijder _

 
Deze optie is niet mogelijk:
A is A,
maar in edmar C compilers en andere hogere talen kunt u een subroutines ...

 
you know the compiler's calling convention.

U kunt bellen naar C functies van assembler als
je weet dat de compiler
er belt verdrag.Ook, moet u wellicht te verklaren de C-functie in een aantal specifieke manier.Hopelijk uw compiler handleiding beschrijft al dat spul, want raden nodigt bizarre problemen.Als ze niet stuk, ik beveel het niet probeert.

Welke compiler gebruikt u?Misschien iemand hier kan u meer specifiek advies.

 
Ook kunt u proberen te genereren assembler bestand van uw C-functie en ontdek door uw eigen compiler belt verdrag.Meestal is dit de snelste manier om te begrijpen hoe je moet sturen parameters.

Ace-X.

 
Ook is een aantal ongewone te roepen C routines uit assambler, ik ben het eens
Mr echo47 advies, ja het
is mogelijk, maar verschilt van compiler compiler.

/ / a

PS: ... maar naar mijn mening
is het zeer ongebruikelijk (nutteloos) om dat te doen!

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />
 
Interface ASM / C is mogelijk als de linker en de compiler specs zijn bekend inzonderheid op als u probeert om de parameters van die functie ..oproepende verdragen moet weten.Ik denk dat u vermelden Keil ..met Keil is mogelijk ..Ik denk dat de naam van de c myCfunction moet worden gevoegd van een undescore _myCfunction. Nou zie de Keil assambler doc ..

 
Nou, je moet het gebruik van ac-compiler anders kon je niet compileren uw C-functie.
Dus je wilt bellen AC functie van enkele montage code, gemakkelijk, als de C-functie wordt aangeroepen:
'int myFunction (void); "
de montage is:
"call myFunction '
uit het oogpunt van de samenstellers, 'myFunction ()' is gewoon een label met een adres!

 
btbass schreef:

Nou, je moet het gebruik van ac-compiler anders kon je niet compileren uw C-functie.

Dus je wilt bellen AC functie van enkele montage code, gemakkelijk, als de C-functie wordt aangeroepen:

'int myFunction (void); "

de montage is:

"call myFunction '

uit het oogpunt van de samenstellers, 'myFunction ()' is gewoon een label met een adres!
 
Hoi,

De c-gesprek werkt als volgt.
1) Laat de variabele ofwel in stapel of in de "compiler" registers.
2) Ga naar een locatie waar het programma is opgeslagen (PC)

Enkele malen is er een verschil in de verklaring van een C-callable functie en assemblage callable functie.Dit is compiler specifiek.Je nodig hebt om te verwijzen naar de handleiding.Ook zorg voor de adresreeksen.
BR
M

 
De andere manier om dit te doen is om een bibliotheek van de C-functie, dan de linker kan de lib en u kunt bellen vanuit assembler.

 

Welcome to EDABoard.com

Sponsor

Back
Top