begin process at 2010 03 19 11:14:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

c++ et asm

 > RAYTRACER EN TEMPS RÉEL ET EN ASSEMBLEUR

RAYTRACER EN TEMPS RÉEL ET EN ASSEMBLEUR


 Information sur la source

Note :
Aucune note
Catégorie :c++ et asm Classé sous :raytracing, raytracer, 3d, assembleur, graphisme Niveau :Initié Date de création :25/08/2008 Date de mise à jour :29/08/2008 00:27:20 Vu / téléchargé :4 059 / 135

Auteur : epineurien

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

 Description

Cliquez pour voir la capture en taille normale
Bonjour à tous !
Je viens de finir mon second RayTracer (du moins disons qu'il affiche quelque chose de potable) et je me suis dit que ça intéresserait peut-être certains d'entre vous d'avoir le code.
Donc voici une petite démonstration sans prétention, ainsi que les portions de code chargé de l'affichage 3D.
Sur ce, je retourne préparer la version 0.22, avec des effets d'éclairage cette fois-ci.

Vous pouvez déplacer la caméra avec les flèches. Appuyez sur F1 pour afficher la liste des commandes ( il y a aussi pas mal d'effet visuel qui n'ont rien avoir avec le RayTracing, appuyez sur la touche "\" pour voir...).

La compilation est prévue pour se faire sous Visual Studio C++ 2008, d'où le listing principal en C++ alors que la librairie est en ASM.

Le RayTracing vaincra ! A bas la Projection !

Source

  • #include <windows.h>
  • #include "Hydrargyrum.h"
  • #pragma comment(linker, "/entry:Main")
  • void __stdcall Procedure3D(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam);
  • DWORD ValeurContraste=256;
  • DWORD ValeurLuminance=256;
  • DWORD ValeurColoration=Coloration_Complete;
  • DWORD ValeurFiltre=0;
  • DWORD ValeurXincremental=0;
  • DWORD StatutSession=1;
  • DWORD AideON=0;
  • HgHandle ImageAide=0;
  • HgHandle PoliceComicSansMS=0;
  • HgHandle ObjetTestPave1;
  • HgHandle ObjetTestPave2;
  • HgHandle ObjetTestPave3;
  • HgHandle ObjetTestSphere1;
  • DWORD AngleRotationObjetTest;
  • struct HgCamera Camera1;
  • int Main(int argc, char* argv[])
  • {
  • MSG BoiteMsg;
  • HgCreerAffichage(Procedure3D,Mode_PleinEcran,1024,768,Couleur_32bits); //redimensionne
  • ImageAide = HgChargerImage("Images/Aide.bmp"); //charge l'image d'aide
  • PoliceComicSansMS = HgChargerPolice("Images/ComicSansMS.bmp","Images/ComicSansMS.txt"); //charge une police de texte
  • Camera1.X=0;
  • Camera1.Y=0;
  • Camera1.Z=0;
  • Camera1.Recul=500;
  • Camera1.RotationX=0;
  • Camera1.RotationY=0;
  • Camera1.RotationZ=0;
  • ObjetTestPave1 = HgChargerObjet(0,0,0,600,20,250,250,0x7f7fff,0x007fff,0x7f7fbf,0x0000ff,0x00ffff,0x00ff00);
  • ObjetTestPave2 = HgChargerObjet(0,0,0,600,50,50,250,0xa0a0a0,0xc0c0c0,0xd0d0d0,0xc0c0c0,0xd0d0d0,0xa0a0a0);
  • ObjetTestPave3 = HgChargerObjet(0,0,0,600,200,200,200,0xf02020,0xf04040,0xf06060,0xf08080,0xf0a0a0,0xf0c0c0);
  • ObjetTestSphere1 = HgChargerObjet(1,0,0,600,100,0,0,0x6f6f6f,0,0,0,0,0);
  • StatutSession=1;
  • while (StatutSession == 1)
  • {
  • GetMessage(&BoiteMsg,0,0,0);
  • DispatchMessage(&BoiteMsg);
  • }
  • ExitProcess(0);
  • }
  • void Procedure3D(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
  • { long FPS;
  • char TamponFPS[10]; //pour l'affichage du nombre d'images par secondes
  • switch(mssg)
  • {
  • case WM_KEYDOWN:
  • switch(wParam)
  • {
  • case VK_NUMPAD9: // touche plus
  • ValeurContraste = ValeurContraste + 20;
  • HgModifierContraste(ValeurContraste);
  • return;
  • case VK_NUMPAD6: // touche moins
  • ValeurContraste = ValeurContraste - 20;
  • HgModifierContraste(ValeurContraste);
  • return;
  • case VK_NUMPAD8: // touche plus
  • ValeurLuminance = ValeurLuminance + 20;
  • HgModifierLuminance(ValeurLuminance);
  • return;
  • case VK_NUMPAD5: // touche moins
  • ValeurLuminance = ValeurLuminance - 20;
  • HgModifierLuminance(ValeurLuminance);
  • return;
  • case VK_NUMPAD7: // touche rouge
  • ValeurColoration = ValeurColoration ^ Rouge;
  • HgModifierColoration(ValeurColoration);
  • return;
  • case VK_NUMPAD4: // touche vert
  • ValeurColoration = ValeurColoration ^ Vert;
  • HgModifierColoration(ValeurColoration);
  • return;
  • case VK_NUMPAD1: // touche bleu
  • ValeurColoration = ValeurColoration ^ Bleu;
  • HgModifierColoration(ValeurColoration);
  • return;
  • case VK_NUMPAD0: // touche noir et blanc
  • ValeurColoration = Coloration_Noir_Blanc;
  • HgModifierColoration(ValeurColoration);
  • return;
  • case VK_ESCAPE: // touche echap
  • HgTerminerAffichage();
  • ExitProcess(0);
  • return;
  • case VK_RETURN: // touche entrée
  • HgTerminerAffichage();
  • ExitProcess(0);
  • return;
  • case VK_F12: //touche F12 - Capture écran
  • HgEnregistrerAffichage();
  • return;
  • case VK_F1: //touche F1 - Aide
  • AideON = AideON ^ 1;
  • return;
  • case 0x31: // touche 1
  • ValeurFiltre = ValeurFiltre ^ Filtre_Luminance_Contraste; //filtre 1 : LC
  • HgModifierFiltre(ValeurFiltre);
  • return;
  • case 0x32: // touche 2
  • ValeurFiltre = ValeurFiltre ^ Filtre_Dilatation; //filtre 2 : Dilatation
  • HgModifierFiltre(ValeurFiltre);
  • return;
  • case 0x33: // touche 3
  • ValeurFiltre = ValeurFiltre ^ Filtre_Erosion; //filtre 3 : Erosion
  • HgModifierFiltre(ValeurFiltre);
  • return;
  • case 0x34: // touche 4
  • ValeurFiltre = ValeurFiltre ^ Filtre_Contour; //filtre 4 : Contour
  • HgModifierFiltre(ValeurFiltre);
  • return;
  • case 0x35: // touche 5
  • ValeurFiltre = ValeurFiltre ^ Filtre_Coloration; //filtre 5 : Coloration
  • HgModifierFiltre(ValeurFiltre);
  • return;
  • case 0x36: // touche 6
  • ValeurFiltre = ValeurFiltre ^ Filtre_Gaussien; //filtre 6 : Gaussien
  • HgModifierFiltre(ValeurFiltre);
  • return;
  • case 0x37: // touche 7
  • ValeurFiltre = ValeurFiltre ^ Filtre_Gaussien_Pondere; //filtre 7 : Gaussien Pondéré
  • HgModifierFiltre(ValeurFiltre);
  • return;
  • case 0x38: // touche 8
  • ValeurFiltre = ValeurFiltre ^ Filtre_Mouvement; //filtre 8 : Motion Blur
  • HgModifierFiltre(ValeurFiltre);
  • return;
  • case VK_BACK: // touche retour arriere
  • HgModifierContraste(256);
  • HgModifierLuminance(256);
  • HgModifierColoration(Coloration_Complete);
  • ValeurContraste=256;
  • ValeurLuminance=256;
  • ValeurFiltre=0;
  • HgModifierFiltre(Filtre_Inactif);
  • return;
  • case VK_RIGHT: //flèche droite
  • Camera1.X = Camera1.X + 10;
  • return;
  • case VK_LEFT: //flèche gauche
  • Camera1.X = Camera1.X - 10;
  • return;
  • case VK_UP: //flèche haut
  • Camera1.Z = Camera1.Z + 10;
  • return;
  • case VK_DOWN: //flèche bas
  • Camera1.Z = Camera1.Z - 10;
  • return;
  • case 0x21: //flèche début
  • Camera1.Y = Camera1.Y + 10;
  • return;
  • case 0x22: //flèche fin
  • Camera1.Y = Camera1.Y - 10;
  • return;
  • }
  • DefWindowProc(hdlg,mssg,wParam,lParam);
  • return;
  • case WM_PAINT:
  • HgEffacerAffichage();
  • HgAfficherTexte(200,10,PoliceComicSansMS,"Demonstration 3D : Lancer de Rayon",0,0xc0ffff);
  • HgAfficherTexte(10,710,PoliceComicSansMS,"F1 = Aide",0,0xf0f0c0);
  • HgDeplacerObjet(ObjetTestPave1,100,100,600,AngleRotationObjetTest,AngleRotationObjetTest,AngleRotationObjetTest);
  • HgDeplacerObjet(ObjetTestPave2,100,-100,600,AngleRotationObjetTest,0,AngleRotationObjetTest);
  • HgDeplacerObjet(ObjetTestPave3,-100,-100,600,0,AngleRotationObjetTest,AngleRotationObjetTest);
  • HgDeplacerObjet(ObjetTestSphere1,-100,100,600,0,0,0);
  • AngleRotationObjetTest = AngleRotationObjetTest + 11930464;
  • HgAfficherLR(&Camera1);
  • FPS = HgObtenirFPS();
  • HgConvertirWORDversASCII(FPS,&TamponFPS);
  • TamponFPS[5]=0; //ne garde que les bons chiffres
  • HgAfficherTexte(600,10,PoliceComicSansMS,&TamponFPS,0,0xc0c0ff);
  • HgAfficherTexte(670,10,PoliceComicSansMS,"FPS",0,0xc0c0ff);
  • if (AideON == 1)
  • { HgAfficherImageSpec(192,144,0,0,0,0,ImageAide,0,0x50,0xc0c0ff);}
  • ValeurXincremental++;
  • HgAfficher();
  • return;
  • case WM_CLOSE:
  • HgTerminerAffichage();
  • StatutSession = 0;
  • ExitProcess(0);
  • return;
  • case WM_QUIT:
  • HgTerminerAffichage();
  • StatutSession = 0;
  • ExitProcess(0);
  • return;
  • }
  • DefWindowProc(hdlg,mssg,wParam,lParam);
  • return;
  • }
#include <windows.h>
#include "Hydrargyrum.h"

#pragma comment(linker, "/entry:Main")


void __stdcall Procedure3D(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam);

DWORD ValeurContraste=256;
DWORD ValeurLuminance=256;
DWORD ValeurColoration=Coloration_Complete;
DWORD ValeurFiltre=0;
DWORD ValeurXincremental=0;
DWORD StatutSession=1;
DWORD AideON=0;

HgHandle ImageAide=0;
HgHandle PoliceComicSansMS=0;

HgHandle ObjetTestPave1;
HgHandle ObjetTestPave2;
HgHandle ObjetTestPave3;
HgHandle ObjetTestSphere1;
DWORD	 AngleRotationObjetTest;

struct HgCamera Camera1;


int Main(int argc, char* argv[])
{ 

MSG BoiteMsg;


HgCreerAffichage(Procedure3D,Mode_PleinEcran,1024,768,Couleur_32bits); //redimensionne

ImageAide = HgChargerImage("Images/Aide.bmp");											//charge l'image d'aide
PoliceComicSansMS = HgChargerPolice("Images/ComicSansMS.bmp","Images/ComicSansMS.txt"); //charge une police de texte

Camera1.X=0;
Camera1.Y=0;
Camera1.Z=0;
Camera1.Recul=500;
Camera1.RotationX=0;
Camera1.RotationY=0;
Camera1.RotationZ=0;
ObjetTestPave1 = HgChargerObjet(0,0,0,600,20,250,250,0x7f7fff,0x007fff,0x7f7fbf,0x0000ff,0x00ffff,0x00ff00);
ObjetTestPave2 = HgChargerObjet(0,0,0,600,50,50,250,0xa0a0a0,0xc0c0c0,0xd0d0d0,0xc0c0c0,0xd0d0d0,0xa0a0a0);
ObjetTestPave3 = HgChargerObjet(0,0,0,600,200,200,200,0xf02020,0xf04040,0xf06060,0xf08080,0xf0a0a0,0xf0c0c0);
ObjetTestSphere1 = HgChargerObjet(1,0,0,600,100,0,0,0x6f6f6f,0,0,0,0,0);

 StatutSession=1;
 while (StatutSession == 1)
 {
	GetMessage(&BoiteMsg,0,0,0);
	DispatchMessage(&BoiteMsg);
 }

 ExitProcess(0);



}


void Procedure3D(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{	long FPS;
	char TamponFPS[10];	//pour l'affichage du nombre d'images par secondes

	switch(mssg) 
	{
    case WM_KEYDOWN:
		switch(wParam) 
		{
        case VK_NUMPAD9: // touche plus
		ValeurContraste = ValeurContraste + 20;
		HgModifierContraste(ValeurContraste);
		return;

		case VK_NUMPAD6: // touche moins
		ValeurContraste = ValeurContraste - 20;
		HgModifierContraste(ValeurContraste);
		return;

		case VK_NUMPAD8: // touche plus
		ValeurLuminance = ValeurLuminance + 20;
		HgModifierLuminance(ValeurLuminance);
		return;

		case VK_NUMPAD5: // touche moins
		ValeurLuminance = ValeurLuminance - 20;
		HgModifierLuminance(ValeurLuminance);
		return;

		case VK_NUMPAD7: // touche rouge
		ValeurColoration = ValeurColoration ^  Rouge;
		HgModifierColoration(ValeurColoration);
		return;

		case VK_NUMPAD4: // touche vert
		ValeurColoration = ValeurColoration ^  Vert;
		HgModifierColoration(ValeurColoration);
		return;

		case VK_NUMPAD1: // touche bleu
		ValeurColoration = ValeurColoration ^  Bleu;
		HgModifierColoration(ValeurColoration);
		return;

		case VK_NUMPAD0: // touche noir et blanc
		ValeurColoration =  Coloration_Noir_Blanc;
		HgModifierColoration(ValeurColoration);
		return;

		case VK_ESCAPE:	// touche echap
		HgTerminerAffichage();
		ExitProcess(0);
		return;

		case VK_RETURN:	// touche entrée
		HgTerminerAffichage();
		ExitProcess(0);
		return;

		case VK_F12: //touche F12 - Capture écran
		HgEnregistrerAffichage();
		return;

		case VK_F1: //touche F1 - Aide
		AideON = AideON ^ 1;
		return;

		case 0x31:		// touche 1
		ValeurFiltre = ValeurFiltre ^ Filtre_Luminance_Contraste;	//filtre 1 : LC
		HgModifierFiltre(ValeurFiltre);
		return;

		case 0x32:		// touche 2
		ValeurFiltre = ValeurFiltre ^ Filtre_Dilatation;	//filtre 2 : Dilatation
		HgModifierFiltre(ValeurFiltre);
		return;

		case 0x33:		// touche 3
		ValeurFiltre = ValeurFiltre ^ Filtre_Erosion;	//filtre 3 : Erosion
		HgModifierFiltre(ValeurFiltre);
		return;

		case 0x34:		// touche 4
		ValeurFiltre = ValeurFiltre ^ Filtre_Contour;	//filtre 4 : Contour
		HgModifierFiltre(ValeurFiltre);
		return;

		case 0x35:		// touche 5
		ValeurFiltre = ValeurFiltre ^ Filtre_Coloration;	//filtre 5 : Coloration
		HgModifierFiltre(ValeurFiltre);
		return;

		case 0x36:		// touche 6
		ValeurFiltre = ValeurFiltre ^ Filtre_Gaussien;	//filtre 6 : Gaussien
		HgModifierFiltre(ValeurFiltre);
		return;

		case 0x37:		// touche 7
		ValeurFiltre = ValeurFiltre ^ Filtre_Gaussien_Pondere;	//filtre 7 : Gaussien Pondéré
		HgModifierFiltre(ValeurFiltre);
		return;

		case 0x38:		// touche 8
		ValeurFiltre = ValeurFiltre ^ Filtre_Mouvement;	//filtre 8 : Motion Blur
		HgModifierFiltre(ValeurFiltre);
		return;

		case VK_BACK: // touche retour arriere
		HgModifierContraste(256);
		HgModifierLuminance(256);
		HgModifierColoration(Coloration_Complete);
		ValeurContraste=256;
		ValeurLuminance=256;
		ValeurFiltre=0;
		HgModifierFiltre(Filtre_Inactif);
		return;

		case VK_RIGHT:	//flèche droite
		Camera1.X = Camera1.X + 10;
		return;

		case VK_LEFT:	//flèche gauche
		Camera1.X = Camera1.X - 10;
		return;

		case VK_UP:		//flèche haut
		Camera1.Z = Camera1.Z + 10;
		return;

		case VK_DOWN:	//flèche bas
		Camera1.Z = Camera1.Z - 10;
		return;

		case 0x21:	//flèche début
		Camera1.Y = Camera1.Y + 10;
		return;

		case 0x22:	//flèche fin
		Camera1.Y = Camera1.Y - 10;
		return;

		}

		DefWindowProc(hdlg,mssg,wParam,lParam);
		return;
	
	case WM_PAINT:

	HgEffacerAffichage();
	HgAfficherTexte(200,10,PoliceComicSansMS,"Demonstration 3D : Lancer de Rayon",0,0xc0ffff);
	HgAfficherTexte(10,710,PoliceComicSansMS,"F1 = Aide",0,0xf0f0c0);

	HgDeplacerObjet(ObjetTestPave1,100,100,600,AngleRotationObjetTest,AngleRotationObjetTest,AngleRotationObjetTest);
	HgDeplacerObjet(ObjetTestPave2,100,-100,600,AngleRotationObjetTest,0,AngleRotationObjetTest);
	HgDeplacerObjet(ObjetTestPave3,-100,-100,600,0,AngleRotationObjetTest,AngleRotationObjetTest);
	HgDeplacerObjet(ObjetTestSphere1,-100,100,600,0,0,0);
	AngleRotationObjetTest = AngleRotationObjetTest + 11930464;
	HgAfficherLR(&Camera1);

	FPS = HgObtenirFPS();
	HgConvertirWORDversASCII(FPS,&TamponFPS);
	TamponFPS[5]=0;			//ne garde que les bons chiffres
	HgAfficherTexte(600,10,PoliceComicSansMS,&TamponFPS,0,0xc0c0ff);
	HgAfficherTexte(670,10,PoliceComicSansMS,"FPS",0,0xc0c0ff);

	if (AideON == 1)
	{ HgAfficherImageSpec(192,144,0,0,0,0,ImageAide,0,0x50,0xc0c0ff);}

	ValeurXincremental++;
	HgAfficher();
	return;

	case WM_CLOSE:
		HgTerminerAffichage();
		StatutSession = 0;
		ExitProcess(0);
		return;

	 case WM_QUIT:
		HgTerminerAffichage();
		StatutSession = 0;
		ExitProcess(0);
	 	return;

	}
	DefWindowProc(hdlg,mssg,wParam,lParam);
	return;
}

 Conclusion

Si vous avez des questions, remarques, demandes... Je vous écoute.
Pour ceux qui se poserait la question, les instructions bizarres que j'utilise sont le jeu d'instructions 'SSE' (y a bon, mangez-en !).

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

26 août 2008 14:25:53 :
Note : Upload de la version complète de la librairie. Le '.zip' précédent ne contenait que le code des fonctions s'occupant de la 3D
26 août 2008 14:27:52 :
Note : Upload de la version complète de la librairie. Le '.zip' précédent ne contenait que le code des fonctions s'occupant de la 3D
29 août 2008 00:27:21 :
Correction d'une valeur non-initialisée à 0 dans HgCreerAffichage, ce qui provoquait parfois un plantage de la librairie. (Il est passé longtemps inaperçu celui-là...)

 Sources du même auteur

Source avec Zip LIBRAIRIE GRAPHIQUE (ET PLUS) EN MODE RÉEL

 Sources de la même categorie

Source avec Zip JEUX FAIT AVEC TASM par vulpes87
Source avec Zip EFFET ARC EN CIEL EN LANGAGE ASM ET EN C++ EN MODE VGA 256 C... par taha_badr
Source avec Zip MP3 FINAL (OU PRESQUE) par h_amellal
Source avec Zip LECTEUR MP3 DE BASE (EXTENSIBLE) par h_amellal
Source avec Zip REPRESENTATION DU MONDE EN ROTATION par jejeje

 Sources en rapport avec celle ci

Source avec Zip LIBRAIRIE GRAPHIQUE (ET PLUS) EN MODE RÉEL par epineurien
Source avec Zip EFFET ARC EN CIEL EN LANGAGE ASM ET EN C++ EN MODE VGA 256 C... par taha_badr
Source avec Zip Source avec une capture SYSTÈME D'EXPLOITATION COS 2000 V1.3.2 FR (UN OS AVEC DES DL... par MrNOP
Source avec Zip FPU SAMPLE 2. par tomart2005
Source avec Zip STARFIELD, SPHERE, CUBE, ROTATION 3D ET 2D EN UTILISANT LE F... par tomart2005

Commentaires et avis

Commentaire de BruNews le 26/08/2008 12:19:12 administrateur CS

Je ne trouve pas l'implémentation de HgConvertirWORDversASCII().

Tu peux supprimer tout un tas de calculs inutiles, VirtualAlloc retourne une adresse direct alignée sur 16.
Précalcule tout ton besoin mémoire et tun n'appelleras VirtualAlloc qu'1 seule fois, ensuite tu placeras tes adresses dans le bloc mémoire retourné.

Commentaire de epineurien le 26/08/2008 14:29:41

Concernant HgConvertir : désolé, je n'avait Uploadé que les fichiers qui s'occupait du RayTracing. Je viens de remplacer le .zip par la même démonstration, mais avec l'intégralité de la librairie.

Et je ne savais pas pour Virtual Alloc. Ce sera en effet plus simple d'avoir directement une adresse alignée, merci pour l'information.

Commentaire de ToutEnMasm le 18/09/2008 20:58:55

Salut,
Serait-il possible de rajouter les fichiers de compilation de visual c++ 2008 ?.
Ainsi que tous les fichiers nécessaires a la compilation ?
.dsp .dsw .sln ......bat
   Merci


Commentaire de ToutEnMasm le 18/09/2008 21:02:59

visual c++ me dit,
demo.cpp(35) : error C2664: 'HgCreerAffichage' : impossible de convertir le paramètre 1 de 'void (__stdcall *)(HWND,UINT,WPARAM,LPARAM)' en 'DWORD'
        Aucun contexte dans lequel cette conversion est possible
demo.cpp(67) : error C2373: 'Procedure3D' : redéfinition ; modificateurs de type différents
        f:\assembleur\raytracer\demo.cpp(7) : voir la déclaration de 'Procedure3D'
demo.cpp(223) : error C2664: 'HgAfficherLR' : impossible de convertir le paramètre 1 de 'HgCamera *__w64 ' en 'DWORD *'
        Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
demo.cpp(226) : error C3861: 'HgConvertirWORDversASCII' : identificateur introuvable
demo.cpp(228) : error C2664: 'HgAfficherTexte' : impossible de convertir le paramètre 4 de 'char (*__w64 )[10]' en 'char *'
        Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Assembleur ... [ par pi0up51 ] Voilà je voulais savoir qch ..Je fais un bac S spécialité Science de l'ingenieur et on fais de la programmation assembleur, sur un vieux microcontrole Deux Questions (Pas compliqué) [ par Dalamar ] Je commence en Assembleur et j'ai deux questions:1-Je travaille avec dev-c++ et je voudrais savoir comment on inclus de l'assembleur2-J'ai trouvé u Quel assembleur choisir ? [ par trinitacs ] J'aimerai savoir quel est le meilleur assembleur qui existe ou si il en faut mixer. Je début difficielment l'asm avec NASM. Faut-il choisir MASM, TASM langage c /assembleur [ par almai467 ] salut ..!mon projet de fin d'annee est un logiciel (compteur internet) qui compte la duree de la connexion internet et le cout avec le langage c je c' Programmation assembleur d'un pilote de souris serie [ par Scaq ] COUCOU, C SCAQ...J'ai du mal à recevoir les données de ma souris serie compilateur assembleur [ par morganitos ] Salut a tous ce qui liront ce message.Je débute en programmation assembleur et voici ma question : où pourrai-je trouver un assembleur, un linker ...( aide pour faire jeux 3d [ par ghyslain ] nous somme en train de faire un jeu 3d de dragon ball z sur pc.sa ne peux que etre une bonne experience.pour nous aider nous avons besoin de:_programm Petit problème pour le nul en assembleur que je suis Merci d'avance [ par rgc50 ] Trouver parmis les 5 nombres 67, 79, 15, e3, 72 le nombre le pls élevé, on le stockera le résultat en 0100 (en assembleur 68000 (MOTOROLA)). Pb assembleur très facile (pas pour moi) Merci d'avance [ par rgc50 ] Trouver parmis les 5 nombres 67, 79, 15, e3, 72 le nombre le pls élevé, on le stockera le résultat en 0100 (en assembleur 68000 (MOTOROLA)). Commander un PCF 8574 en assembleur 68000 [ par Apophis74 ] Je cherche quelqu'un qui pourrait m'adier à faire communiquer ma carte Coldfire 5307 avec une carte d'ES PCF8574 via le bus I2C en assembleur 68000. M


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,014 sec (4)

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