Salut
C'est a propos de la créations de nouvelles fonctions pour le Kit SDK NeoDev , et de pouvoir mixer du Code C et ASM
pour rappel il s'agissait d'un Message du 05/12/2009 de ce Forum
topics/127038-moved-le-sdk-neodev Poste du 05/12/2009
>FTK
Pour le bout de source pour la lecture CD, je comprend pas ce qu'ils font
avec _ARGS(*). Je sais pas si c'est un tableau ou quoi... mais vu le nom,
c'est peut être un pointeur vers le début des arguments nécessaires à
l'appel d'une procédure du BIOS.
Je crois me rappellé t'avoir donné un semblant de reponse en te disant que '.set _ARGS, 4' que c'etait comme une sorte de :
ARGS EQU 4 ... je pense que je n'avais pas totalement tord, mais ce n'etait pas tout a fait la reponse a donner
Exemple Arguments :
LoadPalette:
.set _ARGS, 4
move.l _ARGS(a7), a1
move.l _ARGS+4(a7), a0
move.l _ARGS+8(a7), d0
* Backup data registers
movem.l d0/a0-a1, -(sp)
* Each pal = 16 words so palette number = d0 >> 5
asr.w #5, d0
------------------------------------------
Code 68000 désassemblé :
EXT_0031:
movea.l 4(a7),a1 ;0374C: 226F0004
movea.l 8(a7),a0 ;03750: 206F0008
move.l 12(a7),d0 ;03754: 202F000C
movem.l d0/a0-a1,-(a7) ;03758: 48E780C0
asr #5,d0 ;0375C: EA40
J'ai donc effectué des recherches en je pense avoir trouvé des REPONSES donné par des PRO , vous les reconnaitrez peut-etre
http://gendev.spritesmind.net/forum/viewtopic.php?t=211&sid=634708aec94ceafd89b93f62cb53d38b
ici Pacal BOSQUET cherche a mixer du Code C avec de l'ASM , et Charles DOTY lui donne une reponse
-------------------------
>De P. BOSQUET
It looks like the compiler is reserving 4 bytes on the stack for each parameter, even when it's only using the low word.
>De C. DOTY :
Yep. It's 4 bytes regardless of parameter size.
To align the code use:
.align x
where x is the byte to align to. For example, .align 4 creates DWORD alignment
RQ : DWORD (4 Byte) or WORD (2 Byte) data format
-------------------------
j'ai trouvé autre chose ici , encore plus complet
http://gendev.spritesmind.net/forum/viewtopic.php?t=703
-------------------------------------
The only things that need changing are the directives, which you can find here.
http://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops
The ABI gcc uses for the 680x0 is as follows:
The return address is pointed to by the stack pointer, with all arguments following it as LONGs from left to right.
0(sp) = return address
4(sp) = first (leftmost) arg
8(sp) = second arg
etc.
You need to save and restore any register you use other than d0, d1, a0, and a1
-------------------------------------
Au passage vous remarquerez que ce thread parle de la librairie 'aPLib' DECRUNCHER tournant entre autre sur le Proc 68K ... pourrais peut-etre utile pour la NEOGEO CD ...
>
http://www.ibsensoftware.com/products_aPLib.html Homepage
>>>> tu en pense quoi FTK, ou vous les autres ?
Bye
Fred/FRONT
PS: donc en un mot c'est lié au Stack Pointer qui contient les DATAs des Registres d'Adresse et de Données qui constituent les parametres du style PALETTE , SPRITE dans les fonctions ou macro que l'on utilise.