begin process at 2012 05 24 04:17:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Applications Windows

 > UTILISER DES CLASS C++ AVEC MASM DIRECTX XAUDIO2BASICSOUND

UTILISER DES CLASS C++ AVEC MASM DIRECTX XAUDIO2BASICSOUND


 Information sur la source

Note :
Aucune note
Catégorie :Applications Windows Classé sous :class c, CWaveFile, masm, directx Niveau :Expert Date de création :29/12/2010 Vu / téléchargé :2 415 / 43

Auteur : ToutEnMasm

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Le source est un prototype dans le sens ou il réécrit l'exemple avec
masm en utilisant la class c++ CWaveFile.
Beaucoup pensaient la chose infaisable,voila de quoi les détromper.

------- Pour réutiliser une clas c++---:
Une classe c++ est constitué d'un .h et d'un .cpp.
*** Il faut d'abord vérifier que toutes les fonctions sont déclarées
dans le .cpp
exemple: dans sdkwavefile.h on garde la déclaration de la fonction
  WAVEFORMATEX* GetFormat();
/*
    WAVEFORMATEX* GetFormat()
    {
        return m_pwfx;
    };
*/
: dans sdkwavefile.cpp on écrit la fonction
WAVEFORMATEX* CWaveFile::GetFormat()
    {
        return m_pwfx;
    };

***** Il faut connaitre la taille a réservé en pile pour le fonctionnement de la classe.
en c++ le code "CWaveFile wave" initialyse la classe
      on desassemble le code source cl /Fa et on cherche la déclaration
      de la variable wave qui nous donne sa taille.
**** au link,on ne peut utiliser que des objets .obj.
     Le code fonctionne si on se lie a une librairie mais ...
     Il se produit un échec a l'exit dans la crt et le programme reste en mémoire.

------- références directx --------
Samples\C++\DXUT\Optional   les classes sont içi
Samples\C++\XAudio2\XAudio2BasicSound      exemple réécrit en masm

------- recompiler le source ----------
Vous aurez besoin des headers sdk disponible sur mon site
les headers directx traduits sont inclus dans le zip et le directx sdk n'est peut-être
pas absolument nécessaire.
J'ai compilé le total avec ml 10 du c++ express 10 et les librairies du windows sdk 7
Modifier le chemin du .wav utilisé,un autre peut convenir (mono)
--- c'est un prototype,le code n'est pas très bien léché --
--- il manque justes quelques déclarations et une macro pour le rendre plus lisible--




 Conclusion

permet d'utiliser les class c++

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   xaudio2
    • audiodefs.sdkTélécharger ce fichier [Réservé aux membres club]9 165 octets
    • bstr.incTélécharger ce fichier [Réservé aux membres club]2 886 octets
    • comdecl.sdkTélécharger ce fichier [Réservé aux membres club]1 040 octets
    • macros.incTélécharger ce fichier [Réservé aux membres club]8 600 octets
    • mem.incTélécharger ce fichier [Réservé aux membres club]12 401 octets
    • SDKwavefile.objTélécharger ce fichier [Réservé aux membres club]139 168 octets
    • xaudio2.asmTélécharger ce fichier [Réservé aux membres club]Voir ce fichier8 003 octets
    • XAudio2.sdkTélécharger ce fichier [Réservé aux membres club]34 932 octets
    • xma2defs.sdkTélécharger ce fichier [Réservé aux membres club]17 067 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip LA COMMUNICATION ENTRE PROGRAMMES PAR ECHANGES DE MESSAGES
Source avec Zip EDITEUR AVEC RICHEDIT ET OLE (POUR LES PHOTOS..)
Source avec Zip METTRE UN BOUTON DANS UN CONTROLE EDIT
Source avec Zip ARCHIVEUR DE PROJETS ASM OU C++
Source avec Zip DISTRIBUTEUR DE FICHIERS

 Sources de la même categorie

Source avec Zip Source avec une capture DUMPER HEXADÉCIMAL par BLUEBIBUBBLE
Source avec Zip AFFICHAGE PIXEL EN ASM X86\VESA SOUS XP par wqaxs36
Source avec Zip LA COMMUNICATION ENTRE PROGRAMMES PAR ECHANGES DE MESSAGES par ToutEnMasm
Source avec Zip EDITEUR AVEC RICHEDIT ET OLE (POUR LES PHOTOS..) par ToutEnMasm
Source avec Zip METTRE UN BOUTON DANS UN CONTROLE EDIT par ToutEnMasm

 Sources en rapport avec celle ci

Source avec une capture COMPTEUR DE TEMPS par parki
Source avec Zip Source avec une capture SHOOT 1.00 par parki
Source avec Zip LA COMMUNICATION ENTRE PROGRAMMES PAR ECHANGES DE MESSAGES par ToutEnMasm
Source avec Zip EDITEUR AVEC RICHEDIT ET OLE (POUR LES PHOTOS..) par ToutEnMasm
Source avec Zip METTRE UN BOUTON DANS UN CONTROLE EDIT par ToutEnMasm

Commentaires et avis

Commentaire de patatalo le 05/01/2011 01:56:49 administrateur CS

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 ?

@++

Commentaire de ToutEnMasm le 06/01/2011 19:42:45

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.

Commentaire de patatalo le 07/01/2011 11:47:55 administrateur CS

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,..

Commentaire de patatalo le 07/01/2011 12:04:41 administrateur CS

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.

Commentaire de patatalo le 07/01/2011 12:07:58 administrateur CS

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.

Commentaire de ToutEnMasm le 08/01/2011 14:52:44

avec movdqa , il n'y a pas 36 choix.
Ou l'adresse est un multiple de 16 ou on obtient un planté.
Le gain de rapidité est CERTAIN.L'astuce de programmation à utiliser est de traiter à part les data non alignés et d'utiliser movdqa pour celles qui le sont.

Commentaire de patatalo le 09/01/2011 21:22:19 administrateur CS

oui, de même que la perte de mémoire est certaine aussi dans la plupart des cas.
l'instruction movdqu peut pallier au problème.

Commentaire de patatalo le 09/01/2011 21:36:45 administrateur CS

en fait, le gain de vitesse n'est même pas certain car copier de la mémoire inutilisée n'est pas un gain de temps. Cela depends donc de l'utilisation.

Commentaire de ToutEnMasm le 10/01/2011 07:26:46

Desolé de te contredire , mais le gain à été verifié par des bancs d'essais (voir us masm forum) et c'est indiscutable.

Commentaire de patatalo le 10/01/2011 21:13:26 administrateur CS

Tu ne me contredis pas car tu ne parles pas de l'utilisation.

Alloue 10000 fois 1 dword et compare 10000 movdqa puis 10000 mov reg32 (sans parler de la perte de mémoire induite). Ensuite alloue 1 fois 10000 dword et là d'accord.

Je n'ai pas trouvé le nombre de cycles utilisé par l'instruction movdqa et movdqu ni la page du forum masm qui en parle donc pas évident pour calculer quoi que ce soit.

Commentaire de patatalo le 10/01/2011 22:58:14 administrateur CS

Sur 64 bits:

.1
dec ecx
mov eax,[esi]
mov edx,[esi+4]
lea esi,[esi+8]
mov [edi],eax
mov [edi+4],edx
lea edi,[edi+8]
jne .1

ici, il n'y a aucun stall.

Une copie de 128 bits avec une seule instruction génèrera forcement un stall sur le jmp. Avec la prédiction de branchement, je ne suis pas sur que movdqa soit plus rapide. Là encore, la perte de mémoire est de 50%.

Commentaire de ToutEnMasm le 11/01/2011 17:21:00

l'instruction peut servir à cela:
http://www.masm32.com/board/index.php?topic=11061.0
tout y est ,code ,tests de rapidité ....

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

étapes pour compiler un programme masm sous dos? [ par samsara ] salut les amis, je suis une vraie débutante et j'aimerais savoir comment compiler mon programme sur masm.Dans le dos je fais : "masm montre.asm " (mo curseur personalisé masm [ par Cendra ] je cherche a mettre un curseur personalisé ( curseur.cur ) dans un de mes programmes mais j'ai du mal a utiliser l'api LoadCursorA ....on m'a parler d Hide Window sous Masm [ par Stormy ] StormyJ'ai une application parfaitement fonctionnelle sous masm32. Je souhaite la rendre "cachée" soit en mode Hide. Celle-ci comporte plusieurs zones Cherche site internet sur le Masm [ par flagyg ] bonjours,je suis débutant en masm et j'aimerais un site inernet(ou un livre)pour commencer alors si vous connaissez ça,merci d'avance !!!! DOCUMENTATION [ par bymo ] Pourquoi sur ce site n'y a t il pas une bibliothèque en français de documentation sur les différents assembleurs:MASM, TASM, NASM, FASM... et autres.C syntaxe Masm [ par Stormy ] J'ai un code asm brut à établir selon les usages de Masm version 8. Cette ligne n'est pas reconnue par le compilateur:mov edx, dword ptr fs:[edx]Quell bug masm? [ par vecchio56 ] j'ai le code minimal suivant:.386.model flat, stdcall .data .code start: end startmais le pb c'est qu'au linkage il me met MASM [ par LordBob ] Bonjour a tous,voila je debute en Asm et j'essaie de me servir de MASM, mais j'ai un peu de mal, personne ne connaitrait un tutorial pour apprendre a Petit probleme avec MASM [ par LordBob ] Bonjour a tous,voila je debute en assembleur et en fait j'utilise MASM32 et je viens d'écrire un programme tout basique qui est simplement censé affic [MASM] Chronomètre [ par ZogStriP ] Je souhaiterais faire un chronomètre à la miliseconde prés ( au format : mm:ss:nn avec mm <=> minutes, ss <=> secondes, nn <=> mili


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,168 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales