IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

compilation binary flat


Sujet :

C

  1. #21
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Attention, les processeurs Zilog et Intel ont deux bus d'adresse séparés: Un pour la mémoire uniquement, et un pour le reste ("les périphériques").

    Sur un 68k, il n'y a qu'un seul bus d'adresse, et les périphériques se trouvent à des adresses mémoire où la RAM ne se trouve pas. Typiquement, on utilise un petit circuit extérieur (un démultiplexeur) qui prend en entrée les bits d'adresse de poids fort et active un des périphériques (ou la RAM) selon la valeur de ces bits...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  2. #22
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Citation Envoyé par lapinoudu33 Voir le message
    Je suis d'accord avec l'idée qu'un micro-ordinateur(MAC,PC,pocketPC) n'est pas une machine obligatoirement toute faîte
    avec les périphéries déja choisies à l'avance comme veux nous le faire passer microsoft avec l'OS vista,
    Ce n'est pas simplement une histoire « d'option ». Un pocket PC est un PC. Un Mac n'en est pas un. De la même façon, tu peux très bien fabriquer une machine qui utilise un Intel Core Quad qui ne soit pas non plus un PC, et sur laquelle les logiciels habituels (Vista, Linux, les applications ...) ne puisse pas fonctionner.

    Dans le même esprit, tout ce qui est numérique chez toi a des chances de contenir un microprocesseur, et est de fait un ordinateur. Ton lecteur DVD de salon, ton four à micro-ondes avec affichage digital, ton autoradio RDS ...

    Bien que je pense que l'on peu adapté électroniquement un pentium I ou un micro processeur utilisé dans les montages amateur en électronique a n'importe qu'elle carte mère récente, non?
    Non.

    Faire ce genre d'adaptation reviendrait à redessiner une bonne partie de la carte-mère elle-même.

    Une carte-mère est une carte qui reçoit le micro-processeur et sur laquelle on peut brancher d'autres cartes (filles). Point. Celles que tu vas commander rue Montgallet ou au PC-City du coin seront toutes (à ma connaissance) des cartes-mère de PC. Et elles sont conçues pour recevoir un nombre limité de processeurs (c'est déjà bien qu'elles en acceptent plusieurs). Tu ne pourras donc pas mettre un P1 sur une carte récente, et en aucun cas un autre type de processeur (un 68K, un Sparc ...).

    Par contre, tu peux tout-à-fait concevoir toi-même une carte qui ne soit pas un PC mais qui exploite un processeur Intel quand même. Bon, ça c'est la théorie. Pour faire quelque chose qui soit capable de suivre un Core, il faut être un industriel. En revanche, tu peux tout-à-fait imaginer un truc à base de Z80, même aujourd'hui.

    déja trouvé et lu d'ou moin pour l'architecture je comprend cela très bien après pour ce qui est de l'asm je dirai que je trouve assez bizarre d'avoir 36 mille registres... pourquoi pas qu'un seul dans le quel on éxécuterai les instructions? alors y'a des histoire avec ces fameuses pile de données à vide et à remplir...(exactement comme en C je suppose)
    Parce que tu n'as pas compris ce qu'était un registre du processeur.
    Il n'y a pas trente-six mille registres. Il y en a quelques uns, qui lui servent à savoir où il en est, et il y a les bus qui lui permettent de communiquer avec l'extérieur. Lorsque tu charges le contenu d'une adresse mémoire avec MOV, le processeur effectue une transaction sur le bus.

    Le microprocesseur, c'est comme un palan sur un dock. Il y a une poignée de registres qui lui servent à contenir les données qu'il vient de lire de l'extérieur. L'instruction MOV en assembleur admet donc plusieurs formes, notamment celle où l'on passe une adresse.

    Le problème de « MOV », c'est que c'est un mnémonique qui regroupe tous les mouvements de données possibles par le processeur. Ça laisse penser que c'est une instruction universelle, que tous les mouvements sont possibles, comme en algèbre (ce qui est faux), et ça ne permet pas de distinguer ce qui relève de l'opération proprement dite de ce qui tient du mode d'adressage. Par comparaison, les mnémoniques du 6809 donné en exemple ci-dessus étaient LD- (Load) pour les mouvements de la mémoire vers le processeur et ST- (Store) dans l'autre sens. L'opérande était ensuite construite en fonction des modes d'adressage du processeur uniquement (dans la limite de ceux pris en charge par l'instruction).

    Donc, au format NASM :

    Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            mov eax, 12345678h     ; Pour charger la valeur elle-même
            mov eax, [12345678h]   ; Pour charger le contenu de l'adresse 12345678h
            mov [12345678h],eax    ; Pour stocker le contenu du registre à la dite adresse

    Les Intel x86 te permettent également de stocker une valeur immédiate directement en mémoire. Beaucoup de processeurs ne peuvent pas le faire et te demanderont de passer d'abord par un registre.

    Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            mov [12345678h],long 11223344h

    Et enfin, tu ne peux pas demander au processeur de déplacer directement une valeur d'une case mémoire vers une autre.

    Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            mov long [12345678h],[55667788h] ; Ne marche pas.

    Ce parce qu'il faut d'abord charger les adresses des données à lire dans des registres pour faire la transaction ensuite.

    Mais bon. Tout ceci commence à devenir un véritable cours. Tu devrais te replonger dans la littérature.

    UPDATE : désormais, le fil ne concerne plus le C. Je propose de tronquer la discussion et de déplacer la queue dans le forum approprié ...

  3. #23
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par lapinoudu33 Voir le message
    Mais j'avais une questions, sur quoi son basées les interruptions du BIOS?

    Une interruption sa à bien deux significations, si elle est logiciel c'est que c'est une fonction programmée comme dans le langage C , par contre si elle est matériel c'est qu'un périphérique quelconque envoie un flux de données sur sa plage DMA(un ensemble d'adresses de base) ou une adresse de base unique(IRQ), c'est ça?
    Ta pensée est floue...

    Il n'y a pas 2 significations. Il y a 2 modes de déclenchement.

    Certaines sont déclenchées par le matériel (un certain état ou une certaine transition a été lu sur un port d'entrée particulier, soit directement par le rocesseur dans les petites architectures, soit par le contrôleur d'interruption (PIC)).

    D'autres sont déclenchées par une instruction machine particulière (en x86 : INT <numero>)

    Dans les 2 cas, un morceau de code est associé à l'interruption (le 'handler') et est exécuté. Il se termine par une sorte de 'return from interrupt' et le programme principal reprend son cours normal.

    DMA = Direct Memory Access : C'est un mécanisme de flux de données rapide entre 2 périphériques. Ça s'exécute en parallèle du processeur (processus matériel asynchrone). Généralement, celui-ci est prévenu de la fin du transfert par une interruption.

    IRQ = Interrupt ReQuest : c'est un état matériel valant 0 ou 1 (binaire) câblé sur le processeur ou le PIC et qui indique au processeur qu'un périphérique fait une demande d'interruption.

    d'accord je comprend mieux, le chipset de la carte mère (son controlleur en quelque sorte) c'est ça? , n'impose rien au démarrage et forte heureusement pour que les gens puisse choisir le BIOS qu'ils veulent avec le bootloader qu'ils veulent n'est ce pas?
    Le BIOS fait partie du programme de boot. Le programme de boot est activé au démarrage du processeur. Un x86 démarre en mode 16-bit et va chercher du code à exécuter en FFFF:0000.

    En principe, on trouve ici une mémoire permanente ([P]ROM, flash etc.) qui contient le programme de boot.

    Il n'y a donc pas le choix ! (OK, on peut reflasher son BIOS, si on veut, mais on ne fait pas ça tous les jours...)

    Le programme de boot va exécuter le POST qui va identifier le matériel (chipset, périphériques divers) et le configurer basiquement pour permettre la lecture d'un secteur de démarrage de disquette, disque dur (C, CD, clé USB etc.

    Il permet aussi, grâce à une astucieuse combinaison de touches, de lancer le configurateur de BIOS qui permet des réglages manuels du matériel. (Ce configurateur fonctionne grçace à un certain nombre de fonctions du BIOS, notamment clavier, INT 09h et affichage, INT 10h) et affichage)

    Jusque là, aucun système n'a été chargé.

    Ce n'est que lorsque le POST a terminé, que le programme de boot va chercher à charger et à exécuter un secteur du disque principal. C'est là que le système démarre.

  4. #24
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Par défaut
    Merci beaucoup de votre aide je vois mieux à présent comment se présentent les choses même si mes pensées colleaint à 90% à ce que vous avez dit.
    Désole ram0000 d'avoir dériver (ne change pas de place le topic stp ^^ )
    voilas maintenant mes expérimentation sur le sujet principale de ce topic:

    Vous avez ici une source en langage C PUR (noyau.c)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #define code_sortie 1
    typedef char byte;
     
    byte evolutionpro(void)
    {
      while(1);
      return code_sortie;
    }
    Puis vous avez sa "préprorissation" et sa compilation (noyau.s)
    ligne de commande: gcc -s noyau.c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	.file	"noyau.c"
    	.text
    .globl _evolutionpro
    	.def	_evolutionpro;	.scl	2;	.type	32;	.endef
    _evolutionpro:
    	pushl	%ebp
    	movl	%esp, %ebp
    	nop
    L2:
    	jmp	L2
    Vous voyez clairement que des lignes ont été rajoutées à mon code.
    Contraignant pour quelqu'un comme moi qui veux réinventée la roue...

    cette ligne de commande objcopy -R .note -R .comment -S -O binary noyau.o noyau

    ma permit d'extraire alors un code préprossérisé,compiler,assembler et le tout
    avec uniquement mon code en pur et dur.

    Donnez votre avie sur la démarche svp
    et grosse question: Pourquoi tant d'importation et d'includes?
    une source de 30octet passe tout a coup en un object de 300 octet et en un exécutable de 16000 octet oO oO format PE oblige?

    m'enfin après tout ça ma source "moulinée" ne fait plus que 16 octets

    Vous l'aurez comprit, tout au long du topic la seule chose que je veux partagée avec les plus grands (sénior confirmés,membre éclairé ...) porte un nom qui suscite bien des polémiques et qui attirent moulte floodeurs, newbies qui prit dans un élan d'éxcitation vont à la foi rechercher "comment faire simple" et expliquer leurs pésimismes et leurs fausses colères prétextueusent avec la fameuse phrase "Windose cÄy mal". n'est ce pas? heureusement tout a l'air de bien ce passer sur ce forum
    (ce n'est pas le cas de ce que jai vu sur le sdz :-° (tres bon site quand meme ^^ )

  5. #25
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par lapinoudu33 Voir le message
    donc tout le "mystere de l'informatique" sur comment fait le système pour communiquer avec le matériel ou comment est faite la fonction printf serait bafoué par le faite que des endroits de la mémoire vive (RAM sur les micro ordinateur) contrôleraient les connecteurs de la carte mère exactement comme certains nerf du corp humain controllerait les muscles de la jambe et pas des yeux, le tout orchestré par le CPU et son contrôlleur d'interruption le PIC
    fantastique.
    Tu devrais lire un article sur l'architecture des PC, ça te remettrais les pieds sur terre...

    Mais une question persiste, d'apres mes connaissances en ASM on ne peut écrire exclusivement que dans les registres du CPU
    Alors tes connaissances sont très partielles. Bien évidemment, tous les processeurs permettent d'accéder à la mémoire et aux périphériques (sinon, on se demande à quoi ça servirait !).

    En asm 86, MOV permet d'accéder à la mémoire (cesse de l'appeler RAM, c'est plus complexe que ça) et IN / OUT permettent d'accéder à la zone I/O (périphériques).

  6. #26
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par lapinoudu33 Voir le message
    Le microprocesseur est un circuit a priori indépendant du reste de la machine. Les onéreux mais très répandus Intel x86 se trouvent chez les revendeurs informatiques, mais un 68K ou un Z80, par exemple, se trouvent typiquement et depuis toujours chez les détaillants en électronique.
    Je suis d'accord avec l'idée qu'un micro-ordinateur(MAC,PC,pocketPC) n'est pas une machine obligatoirement toute faîte
    avec les périphéries déja choisies à l'avance comme veux nous le faire passer microsoft avec l'OS vista,
    [Apprends à utiliser les citations...]

    Mais qu'est-ce que tu racontes ? Tu utilises un générateur de texte aléatoire ?
    mais les fabriquant de carte mère sont bien obliger de respecter les standards
    Pui, et ces standards évoluent avec la technomogie. Une CM de 8088 n'a rien à voir avec une CM de Pentiim IV ou Atom etc.
    Bien que je pense que l'on peu adapté électroniquement un pentium I ou un micro processeur utilisé dans les montages amateur en électronique a n'importe qu'elle carte mère récente, non?
    Non.

    Sur ça on est d'accord
    Euh, il n'est pas question ici d'opinions, mais de données factuelles...

    On ne te demande pas d'être d'accord, mais de comprendre et de retenir...

    l'instruction mov justement permet les déplacements de valeurs d'où son nom "move->bouger"
    Non, justement, MOV ne déplace rien, mais fait une copie. Se méfier du sens littéral des mnémoniques. Seul la définition du constructeur a un sens.

    Mais sa ce son des manipulations qu'a l'intérieur du processeur...
    comment faire sur la mémoire centrale (RAM) de la machine (PC)?
    Soigne ton orthographe, tu deviens incompréhensible.

    Pour écrire d'un registre vers une mémoire, il y a une dizaine de modes d'adressages possible en x86 mode réel... Je ne les connais pas par-coeur (c'est le travail de mon compilateur C, pour revenir au sujet de ce forum...)

    Ca ressemble à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MOV, DS:[1234h], AX ; (DS:adresse) <- AX
    où DS: est le 'Data Segment register'...

    pour ce qui est de l'asm je dirai que je trouve assez bizarre d'avoir 36 mille registres
    En x86, il n'y a pas 36.000 registres. Il y a ce qu'il faut, c'est tout :

    AX : accumulateur
    BX : base
    CX : compteurs
    DX : données

    Les 4 segments :

    CS : Code
    DS : Données (data)
    SS : Pile (stack)
    ES : Données supplémentaires (extra)

    Les pointeurs :

    IP : Instructions (CS:IP)
    BP : Base
    SP : Pile (BP:SP, SS:SP etc.)

    Les index :

    DI : données
    SI : pile

    Indicateurs :

    SR : Etat (status) ?

    ... pourquoi pas qu'un seul dans le quel on éxécuterai les instructions?
    Un registre est fait pour des donnéees, pas pour des instructions. On a pas accès aux registres d'instrictions. Leur gestion est automatique (CPU).

    alors y'a des histoire avec ces fameuses pile de données à vide et à remplir...
    Je ne vois pas trop de quoi tu parles... Visiblement, tes connaissances sont floues et partielles... Tu balances des mots dont tu ne connais pas le sens. Sait-tu ce qu'est la pile et à quoi elle sert sur un processeur ?

    Plutôt que de faire des commentaires plus ou moins foireux, tu ferais mieux de poser des questions précises...

    Mais documente toi d'abord. Il y a beaucoup à apprendre sur Wikipédia.

    (je rappelle qu'on est sur le forum C et que ce qui est en-dessous du C est hors-sujet).

  7. #27
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par lapinoudu33 Voir le message
    Vous avez ici une source en langage C PUR (noyau.c)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #define code_sortie 1
    typedef char byte;
     
    byte evolutionpro(void)
    {
      while(1);
      return code_sortie;
    }
    A quoi sert le return ?

    Ce code, en assembleur optimisé s'écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    _evolution :
      jmp _evolution
    Point.

    Puis vous avez sa "préprorissation" et sa compilation (noyau.s)
    ligne de commande: gcc -s noyau.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	.file	"noyau.c"
    	.text
    .globl _evolutionpro
    	.def	_evolutionpro;	.scl	2;	.type	32;	.endef
    _evolutionpro:
    	pushl	%ebp
    	movl	%esp, %ebp
    	nop
    L2:
    	jmp	L2
    Attention. Tu mélanges 'preprocesseur' qui est une opération qui se fait avant la compilation (inclusions, expansion des macros) et génération du code assembleur. Rien à avoir...

    Dans le code produit, on retrouve la boucle que j'avais prévue. Acrite l'optimisation

    gcc -O -s noyau.c
    gcc -O1 -s noyau.c
    gcc -O2 -s noyau.c

    a partir d'un certain niveau, le code va se réduire à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    _evolutionpro:
    L2:
    	jmp	L2
    Vous voyez clairement que des lignes ont été rajoutées à mon code.
    Contraignant pour quelqu'un comme moi qui veux réinventée la roue...
    C'est parce que tu as utilisé un mode de compilation naïf...

    Pourquoi tant d'importation et d'includes?
    Tu parles de quoi ?
    une source de 30octet passe tout a coup en un object de 300 octet et en un exécutable de 16000 octet oO oO format PE oblige?
    Il n'y a aucun rapport entre la taille d'un source et son poids en code executable...
    m'enfin après tout ça ma source "moulinée" ne fait plus que 16 octets
    C'est pas le source qui fait 16 octets, c'est le code compilé. Il devrait même faire moins.
    Vous l'aurez comprit, tout au long du topic la seule chose que je veux partagée avec les plus grands (sénior confirmés,membre éclairé ...) porte un nom
    Quel nom ?

  8. #28
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Par défaut
    mais justement mes question se précise dans mon dernier message...
    dsl je confond tout là ><
    j'ai voulu expliquer ce que je pensais mais rapidement

    je ne confond pas le préprocesseur avec autre chose j'ai voulu donner un ordre d'idées: préprocesseur > compilation > assemblage
    et le code assembleur plus haut ce n'est pas moi qui l'est fait mais gcc avec l'option -s qui ne fait pas d'opération d'assemblage de l'asm

    -ed- je sais très bien que c'est mon code compilé et assembler qui fait 16octet ma source en fait beaucoup plus...

    La chose que je voulais montrer c'est comment programmer une petite tranche de C et faire en sorte que rien ne soit lier avec pour qu'elle soit directement comprise par le processeur ... mais apparement dans ton expliquation tu dit que l'usage de "in" et "out" (instructions asm) est la base de toutes communiquations avec les périphériques, après les adresses prédéfinies en mémoire que nous a cité ram0000.Ce que j'ai comprit (je t'assure je n'utilise pas un générateur de phrase) mais aussi ce que je savais déja (mais je m'exprime et j'écris pas très bien) c'est le fonctionnement de l'architecture d'un micro ordinateur qui peut être aussi bien un PC qu'un MAC qu'autre chose pour vue qu'elle soit constituer d'un processeur d'une carte mère et de bloc mémoire pour éxécuter les programme ,non?

  9. #29
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Citation Envoyé par lapinoudu33 Voir le message
    c'est le fonctionnement de l'architecture d'un micro ordinateur qui peut être aussi bien un PC qu'un MAC qu'autre chose pour vue qu'elle soit constituer d'un processeur d'une carte mère et de bloc mémoire pour éxécuter les programme ,non?
    On va dire que oui. La seule chose dont a besoin un microprocesseur, c'est un programme à exécuter (qui peut se trouver en ROM). Même la RAM, à la limite, pourrait être facultative, mais ce n'est pas la peine d'essayer de faire tourner quoi que ce soit sur une grosse machine sans RAM :-) C'est un peu différent avec les microcontrôleurs, et encore.

    Maintenant, la « carte-mère », ce n'est pas un type de composant en particulier. Ce n'est que la platine sur laquelle tu vas disposer tous les éléments de ton ordinateur. On en parle beaucoup aujourd'hui car, d'une part, le PC a toujours été conçu pour que son boîtier puisse être ouvert et, d'autre part, parce que l'informatique est un tel enjeu aujourd'hui que chaque élément fait l'objet d'un développement archarné, spécifique et extrêmement poussé.

    La carte-mère d'un PC se choisit aujourd'hui au même titre qu'une carte d'extension, ou que le processeur lui-même, mais ça n'a pas toujours été le cas. Du temps des 8 et 16 bits, on concevait l'ordinateur dans son ensemble, et celui-ci restait toujours le même (époque reposante pour les développeurs en herbe). À titre de comparaison, tu ne changes jamais la carte-mère de ton Mac ni celle de ton iPhone.

  10. #30
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par lapinoudu33 Voir le message
    La chose que je voulais montrer c'est comment programmer une petite tranche de C et faire en sorte que rien ne soit lier avec pour qu'elle soit directement comprise par le processeur
    Oui, enfin, une application sans I/O, ça ne sert pas à grand chose... Ce n'est donc pas très significatif...

    ... mais apparement dans ton explication tu dit que l'usage de "in" et "out" (instructions asm) est la base de toutes communications avec les périphériques,
    en x86, oui, tout à fait. La plupart des péripheriques sont mappés en I/O. Il peuvent néanmoins occuper aussi une plage mémoire (carte video, par exemple) dédié ou partagée.
    c'est le fonctionnement de l'architecture d'un micro ordinateur qui peut être aussi bien un PC qu'un MAC qu'autre chose pour vue qu'elle soit constituer d'un processeur d'une carte mère et de bloc mémoire pour éxécuter les programme
    Une architecture définit un type de machine. Un PC et un Mac n'ont pas la même architecture (même si maintenant, ils ont le même processeur).

    Par contre, tous le PC d'un certain type, ont une architecture compatible qui fait que le même OS, prévu pour cette architecture, peut tourner sur n'importe quel PC ayant cette architecture.

    Par contre, impossible de faire tourner un Mac/OS sur une architecture de PC ou inversement.
    (ou alors en émulation, mais c'est tout autre chose et c'est lent et fragile).

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. comment compiler un binary file sans le code source (android)
    Par sup.wado dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 21/04/2011, 19h36
  2. [Turbo Pascal] Flat binary
    Par CP / M dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 19/07/2008, 09h22
  3. Erreur après compilation : cannot execute binary file
    Par Djo00 dans le forum Administration système
    Réponses: 8
    Dernier message: 21/07/2006, 16h26
  4. Réponses: 2
    Dernier message: 27/10/2005, 18h59
  5. [GCC]Probleme compilation FLAT BINARY sur windows
    Par Hexanium dans le forum Autres éditeurs
    Réponses: 10
    Dernier message: 24/07/2005, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo