733Fermer735
GodzilLe 28/12/2016 à 16:42
les seules valeurs legales dans ce systeme sont 0 a 15.

Oui, il y a des bizzareries a l'utilisation de jl/jb dans une autre fonction, comme si le signe de la meme variable changeais en plein milieu de la fonction.

En fait je me demande si il n'y a pas eu utilisation de macros de type de check sans faire gaffe a ce que fait la macro et rajouter un valide test "if (fd > MAXOPENEDFILE) { return OUBOFBOUND }" la ou la macro retourne -1.
Vu la tronche du code il est quasi sur que c'est généré par un compilateur, meme un mauvais dev ASM ne ferrais pas des choses aussi alambiqué (et les parties vraiment en ASM ne sont pas aussi tordus)

Je pense que les compilateurs C pour x86 16bits n'était pas des foudre de guerre question optimisation.. Il faudrait que je regarde vraiment que que Digital Mars est capable de faire, sinon va falloir se tourner vers un nouveau compilatueur (probablement en ecrire un, ou au moins un backend pour un existant, reste le probleme du far/near qui n'existe que pour les compilo spécifiques x86... c'est une plaie la segmentation sur ce point... (ou alors il faut faire des fonciton speciales qui n'utilisent pas des pointeurs mais des structures mais c'est contraignant.

En fait je me demande si il n'y aurais pas moyen de faire un pre-processeur qui mange du far/near et pond du code C sans ce teintage de pointeur et qui peux etre mangé par un compilateur qui ne sais pas ce que sont les teintages de pointeurs..