|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 | ||
|
Membre confirmé
![]() Inscription : juillet 2003 Messages : 304 ![]() |
Si ca amuse le posteur, voila ce que j'ai fait hier soir.
J'ai crée un programme simple dans le style Code :
Bref. A bientot
__________________
TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS |
||
|
|
00
|
|
|
#22 |
|
Invité régulier
![]() Inscription : juin 2002 Messages : 9 ![]() |
J'ai lu tous les posts et j'ai des questions qui me viennent.
Déjà , qqun a dit que les proco comprennaient l'hexa. Les processeurs travaillent en hexa directement? Deuxièmement, les api windows sont coompilé en asm non? Il existe donc des programmes de "traduction sma en binaire" non? Qqun m'a dit qu'ils se trouvaient dans le io.sys et msdos.sys. Donc si je comprends bien, les programmes apellent des apis, puis les apis apellent ces programmes traducteurs. Encore une quastion conne. Comment le pc fait la différence entre une instruction et un nombre? Vu que tout est numéraire? Sije ne me trompe pas, les traitements vars les périf, écran, clavier ... sont fait par des interruptions bios? Donc il doit y avoir des instructions bios et des instructions proco et des nombres, valeur à mettre en pile. Comment l'ordinateur fait la différence entre tout ca et oriente correctment? La pile au fait, c'est bien la ram? Ou juste une partie? Ou uniquement les caches des processeurs? |
|
|
01
|
|
|
#23 |
|
Membre habitué
![]() Inscription : mai 2003 Messages : 146 ![]() |
Si vraiment tu es interessé par le sujet je te conseille l'excelent:
Architecture de l'ordinateur de Tanenbaum aux ed Dunod. http://www.dunod.com/pages/ouvrages/ficheouvrage.asp?Pro_Code_GPE=45158 |
|
|
10
|
|
|
#24 |
|
Invité régulier
![]() Inscription : juin 2002 Messages : 9 ![]() |
Je vais me le procurer merci beaucoup pour les références.
|
|
|
00
|
|
|
#25 |
|
Membre du Club
![]() Inscription : août 2003 Messages : 47 ![]() |
Pour Krys29, les processeurs travaillent pas spécialement en hexa, l'hexa est simplement un moyen plus pratique d'écrire du binaire. Le cpu comprends que le binaire, c'esdt la base de l'électronique, 0,1, pas courant, courant... mais attention, pour bubonik, bien que le cpu ne comprenne que le binaire, la plus petite quantité d'information sur laquelle il travaille et un octet/8 bits (dans le cas d'un x86 en tout cas)
donc lire les 10 premiers bits d'une chaine ça veut pas dire grand chose du point de vue cpu, tu seras obligé d'en lire 16, même si les 6 derniers t'intéressent pas. L'ordinateur fait la différence entre tout ça grâce aux registres du processeur, ce sont des "cases" dans le processeur qui contiennent des adresses mémoires qui correspondent aux différentes structures, comme la pile, le code, les données, etc... il n'y a pas de différences entre une instruction et un nombre, une instruction est un nombre, simplement, les nombres qui se trouvent à l'adresse pointée par le registre cs (code segment) sont considéré par le cpu comme des instructions, même s'ils n'en sont pas ! Tout ça est quelque peu simplifié, bien sûr, le fonctionnement d'un cpu est très complexe. La pile c'est bien la ram, le code aussi, les données aussi. Les caches du processeur sont juste un mécanisme qui sert à augmenter la vitesse d'execution d'un programme. Ce mécanisme consiste à mettre dans le cache les données les plus souvent utilisées, parce que cette mémoire cache est très rapidement accéder par le cpu, bcp plus rapidement, donc c'est pas si faux ce que tu dis, on peut considérer que la pile est toujours dans le cache, car cette zone mémoire est très très souvent utilisée dans un programme. le cache sert aussi pour l'execution du code, le cpu prends les données pointées par cs, le code donc, et les met dans le cache (un cache différent bien sur, il mélange pas tout) par paquet dont la taille varie suivant le type de cpu, puis il exécute les instructions une par une à partir de ce cache d'instruction. C'est ce qui a amené la nécessité de prédiction de branche. En effet, quand le cpu rencontre un saut conditionnel, il ne sait qu'au dernier moment quelle branche va être prise, il doit donc tenter de prédire ça, pour charger les instructions à l'avance. S'il se trompe, il doit vider le cache, et le charger avec la bonne branche, et c'est une grosse perte de temps. D'où l'importance de bonnes prédictions, surtout que les caches sont de plus en plus gros, et une mauvaise prédiction devient de ce fait de plus en plus pénalisante. Désolé de squatter le forum, il parait que c'est bon de s'exprimer, ça permet de savoir ce qu'on connait vraiment |
|
|
10
|
|
|
#26 |
|
Membre à l'essai
![]() Inscription : août 2003 Messages : 55 ![]() |
Et savez-vous s'il existe des cours de langage machine (je ne parle pas d'assembleur), parce-que j'ai éssayé de comprendre un "hello world" en .com après édition et je n'ai pas compris grand chose aux codes hexa alors en ascii, qu'est-ce que ça donnait!
voilà les codes Hexa BA, 0C, 01, B4, 09, CD, 21, B8, 00, 4C, CD, 21, 48, 65, 6C, 6C, 6F, 20, 77, 6F, 6C, 64, 24 Sachant quand même que 48, 65, 6C, 6C, 6F, 20, 77, 6F, 6C, 64, 24 sont les hexa pour la chaîne Hello world. Qui sait, c'est peut-être ce que cherche NaskY. |
|
|
00
|
|
|
#27 |
|
Membre du Club
![]() Inscription : août 2003 Messages : 47 ![]() |
Assembleur et codes hexa sont intimement liés :
BA 0C 01 : mov dx,010Ch B4 09 : mov ah,09 CD 21 : int 21h B8 00 4C : mov ax,4C00h CD 21 : int 21h 10Ch c'est l'offset de la chaine en sachant que dans un .com le début du programme est à 100h. mov ah,9 int 21h c'et la fonction dos 'afficher une chaine' et mov ax,4c00 int 21' c'est la fonction dos 'terminer le programme' |
|
|
00
|
|
|
#28 |
|
Membre habitué
![]() |
Intéressant ! ... Juste quelques réflexions, meme si je reprends peut etre certaines idées déjà énoncées ...
L'expression "programmer en binaire" a peu de sens. Ici, on parle ... "hyper bas niveau", bien entendu. Quand on programme, on ne programme pas l'ordinateur en lui meme, mais le microprocesseur. Le µP est un automate, sans plus. Il est capable de faire un certain nombre de choses ... addition,soustaration... entre les registres, avec la mémoire ... etc ! Il exécute tout ca de facon totalement séquentielle en prenant note de ce qu'on lui demande, instruction par instruction, au rythme d'un métronome, l'horloge. Chaque instruction, en mémoire, est représentée par un nombre. Le µP ne sait interpréter (pas comprendre!) que des nombres. Maintenant, peu importe comment sont représentés ces nombres. Pour le moment, on en est toujours au binaire. Pourquoi ? c'est la facon la plus facile de pouvoir représenter des nombres avec des fils électriques et du courant. Si nous avions trouvé une logique a 10 états, nos µP, pourraient interpréter le décimal. Malheureusement, entre "y'a du courant = 1" et "y'a plus d'courant = 0", on a rien trouvé d'intermédiaire et d'exploitable (certains on essayés). Maintenant, le µP, n'interprète pas du binaire. Il interprète des mots binaires ... de 8, 16,32 ou 64 bits élémentaires. Un seul 0 ou 1 n'a aucun sens pour lui... il ne rencontre d'ailleurs jamais de bit isolé. Un tel µP, serait un µP 1 bit et ne posséderait que 2 instructions possibles. Le premier µP était un µP 4 bits, le "4004" (1970). Un mot de 8 bits pourra ainsi etre porteur de 256 ordres différents. Le binaire n'est pas une forme de programmation (programmer "en" binaire ... hum ) c'est simplement une facon de représenter des nombres. Nombres qui ont un sens pour notre µP. On peut représenter ces nombres comme on veut, simple facilité pour notre pauvre cerveau ! bianire, octal, hexadécimal ... ou en base 3.67 .. peu importe. Ce n'est qu'une forme d'écriture, mais le µP, lui, est très limité et ne voit un sens que dans le binaire, car son seul sens de perception est la "présence ou non de courant électrique". Le jour ou nous inventerons une technologie basée, non plus sur le courant électrique, mais sur les ondes lumineuses ... nos programmes seront faits de nuances de couleurs.... ps: l'expression "cours de language machine" a peu de sens également. Il n'existe pas de "cours" sur les lettres de l'alphabet. On les connait ou on ne les connait pas. Ensuite, quand on les connait, on peu suivre des cours de Francais. C'est pareil en informatique. Les lettres de l'alphabet, ce sont les différentes instructions possibles. Si tu veux pouvoir faire des "phrases" avec ... il s'agit de cours de programmation, algorithmique ... Un cours de C++ ou de Delphi n'est jamais qu'un cours de sémantique. Connaitre simplement toutes les possibilités de c++ n'a jamais permis a personne de faire un programme. Par contre, si tu as acquis cette faculté de structurer ta pensée en schémas ordonnés ... alors, avec ton doigt dans le sable, tu peux faire de belles choses. [edit] Merci a Narmataru (ci-dessous). |
|
|
30
|
|
|
#29 |
|
Membre Expert
![]() ![]() Inscription : décembre 2002 Messages : 1 525 ![]() |
alors chapeau
c'est du claire du chez clair
__________________
Reportage d'Arte sur Linux |
|
|
00
|
|
|
#30 |
|
Invité de passage
![]() |
Bonjour.
Vous considèrerez peut-être ça comme une autre question mais, pour débuter, n'auriez-vous pas un petit code d'exemple (seriez-vous assez fous pour en avoir déjà fait Juste un petit code (juste quelques centaines de lignes @++ paulolol |
|
|
00
|
|
|
#31 |
![]() ![]() R&D en systemes informatiques bas niveau Unix/Linux Inscription : mai 2004 Messages : 7 191 ![]() |
Un deterrage de sujet de presque 9 ans, pas mal.
Sinon, tu peux programmer comme ca si tu veux : http://www.iquilezles.org/blog/?p=1426 |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com