Taquin (2)

Description

Reprise du code de William VOIROL.
Origine:
http://codes-sources.commentcamarche.net/source/100735-jeu-taquin-nxn

EXE est compilé x64, 3.96 Ko, 4064 octets.
Grille 8x8.

Le but est de montrer comment compiler sans CRT ni dépendances autres que DLLs System afin de pouvoir livrer EXE sans setup.
Il est clair qu'il faut avoir au préalable écrit son propre CRT.

De l'original il fallait remplacer rand() et _itoa().
- rand():
seed = (DWORD) __rdtsc();
seed = seed * 214013 + 2531011;
dwAlea = (seed >> 16) & 0x7FFF;
_itoa():
J'ai mis ici bnultoa() vu qu'il n'y avait pas de nombre signés.
Bien que aisément équivalente en perfs à celle du CRT, j'ai mis cette version "code court" qui n'est pas la + rapide mais largement suffisante ici.

Une fois les fonctions CRT évacuées, il suffit d'indiquer au linker un point d'entrée perso au lieu d'avoir un WinMain() standard auquel le CRT fournit les paramètres.
EX:
int WinMain(hinst, ...);
Remplacer par:
void myWinMain()
{
hinst = GetModuleHandle(0);
// ...
// return 0 du WinMain (ou autre code erreur)
ExitProcess(vErr);
}

Voilà tout, adieu CRT et ses antiques nuisances.

----------------------------
Infos sur ma compilation (_build.bat):
Ce fichier est généré par un prog de templates de projets (perso comme tout le reste).
Cette compilation utilise les binaires de VS 2013, ml64.exe pour l'ASM et cl.exe pour le C. Si C++ suffit de modifier la variable %optCL% du bat.
Je n'ai pas VS d'installé ni aucun autre IDE, juste un dossier E:\_BINVS\ comprenant les binaires, headers, et libs nécessaires du SDK.
Dans mon boulot ce sont les chemins des binaires de ICC (Intel compilo) qui sont dans le bat (aussi dans _BINVS).
Si on utilise des flottants dans le code, ajouter:
si binaires VS utilisés: int _fltused = 0;
si Intel: BYTE _fltused = 0;

---------------------------

Ne pas hésiter à demander pour toute info complémentaire.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.