UTILISER DES CLASS C++ AVEC MASM DIRECTX XAUDIO2BASICSOUND

Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
- - Dernière réponse : ToutEnMasm
Messages postés
552
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
26 mars 2016
- 11 janv. 2011 à 17:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52658-utiliser-des-class-c-avec-masm-directx-xaudio2basicsound

Afficher la suite 
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
salut,

lea ecx,wave
call ??0CWaveFile@@QAE@XZ

il faut toujours prendre ecx ? On peut prendre n'importe quel registre ?

lea edx,wave
call ??0CWaveFile@@QAE@XZ

ça marche aussi ?


Qu'apporte l'alignement de 128 bits en terme d'optimisation par rapport à un alignement de 32 ou 64 bits ?

@++
ToutEnMasm
Messages postés
552
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
26 mars 2016
1 -
ecx est utilisé comme pointeur sur wave pratiquement systématiquement dans le source traduit en asm par cl /Fa.
Je me suis contenté de le constater.
L'alignement 128 bits n'est pas utilisé dans ce source.
Pour le reste,un alignement (1,2,4..) est demandé explicitement par certaine structures et par certaines intructions (movdqa demande un alignement 16 bytes) .
Au dessus,je n'ai pas d'exemples.
L'intérêt est toujours le même,améliorer la vitesse d'execution en évitant de former des adresses byte par byte.
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
C'est une optimisation que je ne trouves pas si interessante que cela car quand on copie, en général, on connait la taille de la copie.

je préfère un code du style:
size>>4
movdqa
size & 15
movsb

on perd moins de place tout en gardant l'optimisation fpu/sse,..
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
l'ennui est que cette instruction necessite un alignement obligatoire de 128 bits réel. les 4 bits de poids faible doivent être a zero sinon: exception.

Il est peut-etre plus simple dans le cas d'utilisation des instruction sse de tout aligner sur 128 bits.

Ton code n'as pas d'exemple a proprement parlé mais il est possible que Windows utilise des instructions 128 bits dans la gestion du heap.
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
remarque qu'il serait aussi possible de faire l'alignement en commencant par un copy byte jusqu'a l'alignement 128 bits, puis copier par 128 bits pour finir par copy byte.