• [^] # Re: Voila ?

    Posté par . En réponse au journal Compilation et optimisation de l'empreinte mémoire. Évalué à 6.

    Oui, merci en effet !
    Dommage que le « plussage » soit plafonné à 10 points.

    Il est agréable de voir qu'il y a encore des gens qui se soucient de ce genre de chose à notre époque. D'ailleurs, à la mienne (il y a un peu plus de 10 ans :-) ), j'avais lancé le même genre de débat sur une messagerie Minitel à caractère informatique :

    Question : Quelle est la taille minimum d'un fichier exécutable (sous DOS) ?

    En utilisant un fichier *.COM, J'avais réussi à descendre à deux octets : CD 20
    Cela codait l'instruction "INT 20h", vieil appel système mais toujours implémenté à l'époque pour terminer une application avant que le célèbre B8 00 4C CD 21 (pour MOV ax,4c00h; int 21h ) n'implémente le code de retour.

    Je me suis quand même fait battre.

    Un connecté m'a fait remarquer qu'en utilisant simplement "RET" (1 octet), on provoquait un retour depuis la pile, qui pointait la fin de l'unique segment du programme, laquelle était par convention initialisée à 00 00. Or, tout au début du même segment (donc en 00 00) se trouvait le PSP, qui par norme commençait toujours par un magic number invariable : CD 20 (ce qui bien sûr n'était probablement pas un hasard) !

    Ensuite on s'est amusé à essayer de compiler un programme vide à l'aide de tous les compilateurs qui nous tombaient sous la main. La palme revenait au Turbo Pascal qui dépassait les 6Ko pour exécuter un programme strictement vide ! :-)

    C'était beaucoup lorsque l'on avait l'habitude de s'échanger les fichiers par disquette, que les graveurs de CD étaient extrêmement rares et que les disques durs n'atteignaient pas 1Go.