c’est quoi du « code natif »?
11 sujets de 1 à 11 (sur un total de 11)
-
Du code natif c’est du code qui n’est pas émulé/wrappé.
Prenons un programme Z, compilé en 68000, sous AmigaOs.
Si on le lance sur un AmigaOs 3.9 avec un 68060, le programme Z fonctionne en natif.
Si on lance ce programme Z sur un AmigaOne sous Os 4, il fonctionne maintenant en émulation. Le programme Z ne peut fonctionner d’ailleur sous Os 4 que si une émulation est capable de le lancer. (en l’occurence oui, mais ça pourrait ne pas être le cas). Le cas est le meme pour MorphOs, Amithlon… Le programme ne fonctionne que grace à l’émulation, dans tous les cas.
Ca n’a rien a voir avec le language. Un programme AMOS fonctionnant sur un Amiga 68000 fonctionne bel et bien en natif (AMOS étant 68000).
En contreparti, un programme Assembleur 68000 lancé sur AmigaOne / Os 4 – Amithlon – Pegasos, il a beau etre en Assembleur, il devient émulé. (c’est à dire qu’il ne fonctionne pas en natif, pas sur un 68000, pas sous AmigaOs 3 et moins).
Oui, (si il tourne, ce qui est souvent le cas). « Natif » est une question d’environnement matériel et logiciel, comme l’a très bien expliqué Crisot. Même famille de cpu, même famille d’Os -> natif.
A contrario, si un programme tourne pour interpréter le code (le traduire), ce n’est plus natif. Ce qui se traduit normalement par une baisse de performances de la machine qui fait tourner du code non natif, en comparaison de ses possibilités maximales, atteintes avec du code natif (et un bon programmeur
).
PowerMac - G5 2.0 GHz - 1.7 Go RAM - Radeon 9600P 128 Mo - MorphOs 3.13 et Peg2 - G4 RIP
Mac mini - G4 1.42 GHz - 1 Go RAM - Radeon 9200 32 Mo - MorphOs 3.9
WinUAE sur HP Core2 Quad 8200
Epave de Mist FPGA remplacé par un Sidi
A1200 malade 😉 et A500 512+512Ko RAM Kickstart 1.3Daff a écrit :
@Articia : un programme compilé pour un 68020 (AmigaOS) peut-il être considéré comme natif quand il tourne sur un 68060 ? un 68000 ?
Oui car il s’agit de la même architecture, le 68060 étant rétro compatible avec le 68020, l’inverse n’est pas vrai mais dans ce cas, on parlera plutôt doptimisation spécifique mais ça reste du code natif.
Autre chose, rappelons qu’un code natif est un code COMPILE pour une architecture, tout code interprété est non natif car il ne dépend d’aucune architecture, c’est le cas de tout langage de script ou les lagages du genre Java/Rebol, etc etc …
Par contre, il existe une petite subtilité appelée JIT qui permet, à lors de l’interprétation du code, de « compiler à la volée » ce code non natif en code natif, ce code natif obtenu est alors conservé dans un buffer et réutilisé à chaque fois que nécessaire.
C’est un gain de performance non négligeable au prix de quelques pertes puisqu’il faut bien le compiler une première fois dans le buffer avant de pouvoir le réutiliser en natif mais c’est assez négligeable.
En revanche, à moins d’avoir un très gros buffer, ça ne marche pas très bien si le code exécuté passe son temps à utiliser des tonnes de routines très différentes qui n’arrivent pas à toutes trouver leur place dans le buffer, dans ce cas, il faut « swapper » le code compilé trop souvent d’où perte de perfs.
Merci à tous, j’ai compris
je posais la question parce que j’ai trouvé ça sur la page de redhat:
« Michael Tiemann is a true open source software pioneer. He made his
first major open source contribution over a decade ago by writing the
GNU C++ compiler, the first native-code C++ compiler and debugger. »
et je n’arrive pas à voir ce qu’il y a d’extraordianire à ça. Il a
écit le premier compileur C++ en code natif, c’est une évidence non?
En 1995 on ne devait pas écrire beaucoup de code émulé ou je me
trompe? Ou alors je n’ai pas compris ce qu’était un « native-code
compiler »?
Ciao
Non ! il a ecrit le premier compilateur C++ Open Source ! spa pareil !
Si
En fait je pense que le sens de « code natif » dans ce contexte est un peu différent de celui expliqué au dessus.
En effet en ce temps les compilateurs C++ (qui étaient parmis les premiers) étaient souvent en fait non pas de compilateurs C++ à proprement parler, mais des genres de « méga pré-processeurs » qui généraient du code C pur qui était lui-même ensuite compilé par un compilateur… bhein C évidemment
Donc ce brave homme a écrit le premier compilateur C++ natif (du code source->en code machine direct sans intermédiaire (quoi que avec GCC cela ce discute, bonjour le p-code, mais je me demande si c’est toujours le cas en même temps)) en open-source. Voilà.
A+,
Alex.
11 sujets de 1 à 11 (sur un total de 11)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Général › c’est quoi du « code natif »?