Hvordan bruger C-kode til at kalde forsamlings funktion

F

feiutm9898

Guest
Kan nogen hjælpe mig koden nedenfor.Jeg har brug for at ringe samling funktion ved hjælp af C-kode.Den # define makro er ok.Men der er udarbejdelse fejl i main ().

-------------------------------------------------- ---
1) Lad os sige, jeg har en samling koden nedenfor:
. GLOBAL AssemblyFun
AssemblyFun:
NOP;
NOP;
.
.

2) Jeg definere dem som makro jeg definere dem

# define C_function (void) AssemblyFun (void)

3) Jeg bruger C-kode til at kalde forsamlingen funktion

main ()
(

C_function ();

)
-------------------------------------------------- -----

 
Jeg tror, det er meget afhængig af din C compiler.Normalt, når jeg nødt til at interface C-og forsamlingsfrihed, jeg skriver funktionsprototypen i C, så jeg kompilere C kildefilen, instruere compileren til at generere (DIS) samling listen.

Så er du nødt til at åbne denne fil med listen over at se, hvordan compileren kalder samling funktion og passere de parametre (for eksempel kan din rutine i ASM forvente nogle variabler tro blive videregivet trough et register, eller trought stakken).Dette skridt er kun nødvendigt for dig at forstå, hvordan din ASM rutine vil modtage dens parametre.

Efter understandig hvordan C compiler vil interface med ASM rutine, vise dig instruere før processaor via en compiler direktiv (__asm__ for eksempel, men du skulle kigge i din compiler manuel), at koden efter direktivet vil være i montage, så processoren ikke generante en syntaksfejl.

 
Du ikke brug for den makro, bare ringe
»AssemblyFun ();"
Hvis koderne er i separate filer, skal du bruge en 'h' fil for linker.

 

Welcome to EDABoard.com

Sponsor

Back
Top