J'en ai eu un en main... Il cartonne pour les FFT (Fast Fourier Transform). Le RTX2010 équipe les TGV allemands (ICE) pour le contrôle des moteurs électriques.
A+
cs_parki
Messages postés75Date d'inscriptionmardi 29 juillet 2008StatutMembreDernière intervention25 mars 2019 27 févr. 2013 à 19:18
Pas de problème BruNews,je suis là pour apprendre.
je corrige la partie 64 bits et je reposte le tout rapidement.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 févr. 2013 à 19:05
Tu as testé tout cela (la partie x64) ?
Désolé mais je n'y vois quasi rien de bon.
Exemple:
;reservation de la pile pour les 4 QWORDS
;obligatoires (dans l'ordre RCX,RDX,R8,R9)
;plus l'adresse de retour RIP
;soit 5 QWORDS*8=40 octets
NIET !!! ce n'est pas le calcul du recul de RSP
RIP est pushé par le 'CALL', n'entre donc pas dans le calcul.
CALCUL:4 param 4*8 32
Ensuite on ajoute à 32 ce qu'il manque pour obtenir un multi de 8 qui ne soit pas multi de 16.
Pourquoi:
A son entrée, toute fonction s'attend à trouver un RSP aligné sur 8 et NON 16. C'est ce qui se passera si tu appliques ce que je viens d'expliquer car c'est bien RIP pushé par CALL qui t'aura mis en 8 non 16. Tout ceci est en autre indispensable pour l'utilisation des registres xmm.
Ex:
aFunc PROC
movdqa [rsp - 24], xmm6
aFunc ENDP
aFunc SAIT que [rsp - 24] est bien ALIGN16 sinon badaboum prog !!!
17 oct. 2013 à 10:38
Vous venez de ré-inventer ce que faisait le langage FORTH nativement.
http://fr.wikipedia.org/wiki/Forth_%28langage%29
Il existe un processeur dont le langage "assembleur" est le FORTH:
http://en.wikipedia.org/wiki/RTX2010
et
http://www.intersil.com/en/products/space-and-harsh-environment/rad-hard-digital/rh-microprocessors-and-peripherals/HS-RTX2010RH.html#0.html
Votre exemple en assembleur RTX2010:
Et c'est tout!
datasheet du RTX2010:
http://www.da.isy.liu.se/~mj/TSEA20/rtx2000.pdf
J'en ai eu un en main... Il cartonne pour les FFT (Fast Fourier Transform). Le RTX2010 équipe les TGV allemands (ICE) pour le contrôle des moteurs électriques.
A+
27 févr. 2013 à 19:18
je corrige la partie 64 bits et je reposte le tout rapidement.
27 févr. 2013 à 19:05
Désolé mais je n'y vois quasi rien de bon.
Exemple:
;reservation de la pile pour les 4 QWORDS
;obligatoires (dans l'ordre RCX,RDX,R8,R9)
;plus l'adresse de retour RIP
;soit 5 QWORDS*8=40 octets
NIET !!! ce n'est pas le calcul du recul de RSP
RIP est pushé par le 'CALL', n'entre donc pas dans le calcul.
CALCUL:4 param 4*8 32
Ensuite on ajoute à 32 ce qu'il manque pour obtenir un multi de 8 qui ne soit pas multi de 16.
Pourquoi:
A son entrée, toute fonction s'attend à trouver un RSP aligné sur 8 et NON 16. C'est ce qui se passera si tu appliques ce que je viens d'expliquer car c'est bien RIP pushé par CALL qui t'aura mis en 8 non 16. Tout ceci est en autre indispensable pour l'utilisation des registres xmm.
Ex:
aFunc PROC
movdqa [rsp - 24], xmm6
aFunc ENDP
aFunc SAIT que [rsp - 24] est bien ALIGN16 sinon badaboum prog !!!