Compilateur C

Compilateur C - C - Programmation

Marsh Posté le 22-05-2009 à 11:47:57    

Bonjour,
  Je cherche svp un compilateur C (une version de gcc par ex) qui compile un fichier .c en un binaire sans laisser sa signature.  
Je veux dire par exemple sous windows la plupart laisse "Cannot be run in MS-DOS..." et plein d'autre chose qui ne servent pas à grand chose.
En fait je cherche exactement un compilateur qui me traduit du C en language machine ce que j'ai écrit.  
Pour mieux me comprendre, mon application va être lancée au démarrage d'un Pc sur support physique bootable et il n'y aura aucun environnement sur la machine.
Peut être j'étais pas trés clair mes n'jesiter pas à me poser des questions.
Merci d'avance.
A+

Reply

Marsh Posté le 22-05-2009 à 11:47:57   

Reply

Marsh Posté le 22-05-2009 à 12:31:14    

peut-être qu'en le compilant sans faire le "link" répond à ton problème
http://gcc.gnu.org/onlinedocs/gcc/ [...] ll-Options avec le switch "-c"

Reply

Marsh Posté le 22-05-2009 à 14:26:23    

Merci, je vais essayer ça dès que possible.
Je te remercie beaucoup couak :)

Reply

Marsh Posté le 22-05-2009 à 17:37:59    

Si c'est du format de l'exécutable, c'est plus une fonction du linker ou même de programmes comme objcopy de GNU (regarde le format binary).  Mais renseigne-toi aussi sur la manière dont boot un ordinateur car il ne suffit généralement pas d'avoir un binaire pour qu'il fonctionne (un PC boot en mode 16 bits par exemple).  Et il y a tout le problème de ce dont a besoin la bibliothèque standard dont le code d'initialisation de l'exécutable.
 
Les exécutables pour Windows sont -- étaient? ma connaissance date beaucoup -- généralement valides dans deux formats d'exécutables: celui utilisé par DOS (où le programme se contente d'afficher le message dont tu te plains) et celui réellement utilisé par Windows.

Reply

Marsh Posté le 22-05-2009 à 18:22:08    

"étaient", depuis Windows 2000 qui est en archi NT, si je ne raconte pas d'âneries.

Reply

Marsh Posté le 23-05-2009 à 14:31:39    

bonjour, je vous remercie tous sur ces réponse.
En fait moi quand j'écris un programme en assembleur et je le compile, j'ai bien un fichier binaire qui ne fait que ce que je demande exactement. Déjà je l'affiche avec un éditeur hexa je retrouve les n bonnes instructions que j'ai écrites traduites en hexa et c'est exactement ce que je veux. Sauf que je suis plus alaise en C, je souhaite alors faire la même chose en C car en assembleur j'arrive pas à développer plus qu'une application Hello World :) j'y connais pas trop. Quand j'écris en C un programme Hello World et je l'ouvre avec un éditeur hexa, je trouve beaucoup plus que ce que j'ai écrit et j'aime bien éviter ça... J'espère que j'étais un peu plus clair!! si je vous embrouille n'hésitez pas à me le mentionner.
Merci d'avance

Reply

Marsh Posté le 24-05-2009 à 01:26:51    

quoi qu'il arrive, si tu génères un exécutable sous windows, que ce soit à partir d'un assembleur ou d'un compilateur quelconque, il doit respecter le format d'exécutables de windows.
 
Si ce que tu dis est valide, alors tu générais probablement des .com avec ton assembleur, et du coup, tu subissais (probablement, encore une fois, à ton insu) les restrictions inhérentes à un .com (code et données limités à un segment, si je ne me plante pas) ...
 
Dans le cas général, un compilo qui cible une machine sous windows produira aujourd'hui plus probablement un fichier au format PE


---------------
last.fm
Reply

Marsh Posté le 24-05-2009 à 11:36:04    

Zrari_h a écrit :

Quand j'écris en C un programme Hello World et je l'ouvre avec un éditeur hexa, je trouve beaucoup plus que ce que j'ai écrit et j'aime bien éviter ça...


Et oui... Ceci est tout à fait normal et inhérent aux langages de plus haut niveau que l'assembleur... L'assembleur est le langage de plus bas niveau qui existe, quand tu produis un exécutable en assembleur, la section de code ne contient que le code que tu as écrit et rien d'autre. En C, ou tout autre langage, la section de code peut contenir bien plus (appels au runtime notamment). C'est ce qui fait qu'un "Hello World" qui prendra quelques centaines d'octets en assembleur prendra plusieurs Ko en C ou autre.
Il n'y a rien à faire contre ça, sauf à te mettre à l'assembleur.
Après, pour ce qui est du format des exécutables, ça n'a rien à voir. Que ce soit en assembleur ou en C, tout exécutable sous Windows sera au format PE (MZ pour DOS autre que .com)


Message édité par Harkonnen le 24-05-2009 à 11:37:08

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-05-2009 à 15:15:08    

Je ne sais pas si c'est vraiment en rapport avec ta question, mais le flag -S de gcc permet de générer du code assembleur.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed