tekila_bandita
Messages postés248Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention15 mars 2007
-
22 févr. 2006 à 16:09
tekila_bandita
Messages postés248Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention15 mars 2007
-
26 févr. 2006 à 14:55
Bonjour,
Je programme C++/C et VB, et j'aimerais étendre mon champ de language à l'assembleur, seul probleme :
Je ne suis pas en age d'apprendre la programmation à l'école (classe de 3°...) ! Pour apprendre le VB le C et le C++, j'ai du beaucoup investir de mon argent dans des bouquin parfois fort couteux, alors j'aimerais savoir si des personnes connaitrait des addresses de site, tuto, ou des references des meilleurs bouquins (meme s'il sont chers, ça peut toujours m'etre utile de savoir au cas où...), ou meme si cela existe, un myen de pouvoir prendre des cours ou des lycees enseignant la programation dès la seconde...
Pouvez vous m'expliquer aussi les differents types de processeurs, les plus repandus, ainsi les plus importants à connaitre le fontcionnement, etc...
MERCI BEAUCOUP ! j'espere avoir été humainement comprehensible, et ne pas etre trop exigeant...
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 23 févr. 2006 à 00:52
salut,
voila des mots a utiliser dans google:
pour le 64 bits, "Yasm" ( retouche de Nasm ).
pour le 32 bits, "Nasm","masm32","Iczelion","Elicz","intel386"
pour le 16 bits, "Nasm","mbr"
les sources peuvent aussi contenir des informations...
cs_Nasman
Messages postés202Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention29 septembre 20083 23 févr. 2006 à 09:01
Bonjour tekila_bandita,
Le langage assembleur est le plus proche de la machine, en fait des microprocesseurs, et par conséquent permet les exécutions les plus rapides ; c'est d'ailleurs le seul langage compris par la machine. En fait du binaire (suite de zéro et de un) condensé en hexadécimal (base seize) pour des questions de place.
Les opérations réalisables par le processeur sont très sommaires, elles consistent à effectuer des lectures de zones de mémoire dans des registres, à écrire dans d'autres endroits, à effectuer des opérations de base (additions, soustractions, multiplications...) ou plus soffistiquées grâce au coprocesseur mathematique. Sont également disponible des tests et des branchements conditionnels, des sauts, des appels de sous programmes (fonctions).
Ces opérations peuvent porter sur un octet (8 bits - de 0 à 255), sur deux octets (un word=16 bits - de 0 à 65535) sur quatre octets (dword=32 bits -de 0 à 4294967295) ou plus pour les opérations 64 bits.
En mode 32 bits, la même opération sera plus rapide que 2 opérations en mode 16 bits.
Le langage assembleur est en fait une transcription en un langage plus compréhensible qu'une suite de un et de zéros ou d'octets.
Exemple:01101010000000000110100000000000001000000100000000000000
ou 6A006800204000
ou push byte 0
push dword 0x00402000
la première instruction empile zéro sur la pile, la deuxième l'adresse 32 bits 00402000
En pratique tu n'indiqueras pas l'adresse mais la référence à une étiquette.
Selon l'assembleur que tu utiliseras le fichier assembleur "la source" seras plus ou moins compact surtout avec l'utilisation de macros. Il est même possible d'avoir une sorte de langage structuré - au détriment parfois du code compilé (l'exécutable).
La réalisation se schématise en plusieurs étapes.
Ecriture du code (en général fichier texte)
Compilation par Yasm, Nasm, Masm...(attention à la syntaxe de chacun des assembleurs) pour avoir un fichier objet.
Edition de liens (rassemblement des différents fichiers objects, bibliothèques, ressources) et création de l'en tête de fichier qui fera que le programme tournera sous Windows, Linux...
cs_Nasman
Messages postés202Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention29 septembre 20083 23 févr. 2006 à 13:51
Je pense que pour commencer à programmer en assembleur tu peux commencer par le 32 bits qui est le système le plus répandu sur les différentes platte formes.
Le 16 bits, bien que très présent sur les tutoriels que tu pourras trouver est devenu obsolète depuis le 386 et windows 95. A ma connaissance, les systèmes d'exploitation fonctionnent en 32 bits et la majorité des programmes. L'arrivée des processeurs 64 bits nécessite encore que les systèmes d'exploitations suivent afin que les programmes 64 bits fonctionnent au maximum de leurs possibilités.
Quant au 16 bits, je pense que sa place est maintenant au musée - quoique les enseignants sont parfois conservateurs dans leurs cours !!!
De plus l'adressage mémoire est sans doute plus simple en 32 bits
Je pense que tu découvrira de nombreuses sources sur ce site. Elles te permettront de te familiariser progressivement avec les différentes instructions langage machine et avec les différents assembleurs.
Bonne continuation
PS Personnellement j'ai commencé avec Nasm et il me convient.
tekila_bandita
Messages postés248Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention15 mars 200733 22 févr. 2006 à 17:03
PS : Je sais que les manieres de programmer sont différentes en assembleurs selon si on utilise un processeur 32bits, 64, ou autres, mais dans ce cas j'aimerais que l'on me donne des references surtout pour le 64bits et ensuite le 32bits car le 32bits va bientot lui laisser sa place...
Aussi, j'aimerais savoir qu'est-ce que ti89, x86, etc...???
re-MERCI BEAUCOUP !
Vous n’avez pas trouvé la réponse que vous recherchez ?
tekila_bandita
Messages postés248Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention15 mars 200733 23 févr. 2006 à 13:16
Alors en faite, la seul différence entre la programmation 32bits de la 64 (et 16 de la 64 et la 32...) et qu'il faudra passer par un chemin un peu plus abracadabrantesque (lol) pour arriver au meme calcul, instruction...?
En tout cas, merci, tu en as dis beaucoup et tu as été très clair!
Seulement, quel est la différence entre les x86 et les autres? Lesquels sont les plus utilisés? Peus-tu me donner des exemples de chaque...?(Intel, Amd, etc...)
Mais, au final, que dois-je apprendre, assembleur x86, assembleur ti89, etc...? Dois-je plutot apprendre 64bits et m'orienter vers les autres, 32bits et me réorienter, ou 16bits (et me réorienter aussi...)??
Voila, je crois que j'ai demander le plus important...
Parce que en faite, le plus important est que j'apprenne cette notion de x86 et tout, car avant je n'en avais jamais entendu parlé...Tandis que le stoquage j'en avais déja abordé les grands principe en C, C++, mais avec la memoire sequentielle...
tekila_bandita
Messages postés248Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention15 mars 200733 24 févr. 2006 à 12:46
Au faite, si quelqu'un vient encore lire ce post, comment et où avez-vous appris l'asm??
Si c'est au bahu, en quelle classe, avec quel orientation, et avec quel "diplome"??? Et où puis-je trouver une bonne école proche de la haute-savoie (Rhone-Alpes)..?
MERCI BEAUCOUP !
je suis désolé pour ce bombardement de question, mais je suis en pleine orientation alors voila....
cs_Nasman
Messages postés202Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention29 septembre 20083 24 févr. 2006 à 14:06
Bonjour tekila_bandita,
Personnellement j'ai appris l'asm en école d'ingénieur de chimie il y a quelques décennies de celà. A l'époque c'était le début du 16 bits. Si je me souviens bien c'était avec un 6809 de Motorola. Dans la réalité c'était du langage machine pur et dur et il fallait calculer les sauts à la main - et saisir les opcodes. J'ai poursuivi avec le langage du 6502 (ou 6510 ?) du Commodore 64, ce qui permettait d'effectuer des taches 1000 fois plus rapidement qu'avec le basic. A cette occasion je m'étais fait (en basic) un programme de transcription des mnémoniques en code décimal que j'implantais avec des poke.
Je suis revenu à l'assembleur que très récemment et j'ai découvert le monde des PCs avec les segments et offsets - que je m'empresse d'oublier depuis que je suis passé au 32 bits. En fait je suis quasiment passé du 8 bits au 32 bits.
Pour l'assembleur je me suis quasiment formé tout seul via les tutoriels que tu pourra trouver sur le net. Par exemple celui de opecheux.free.fr/
C'est essentiellement du 16 bits mais il est en français. Après il te faut disposer des instructions des microprocesseurs, connaitre leur syntaxe et ce qu'ils font, tu auras également besoin d'un assembleur. Par exemple Nasm.
Pour revenir à une école de formation, tu auras peut-être des cours d'asm dans une école d'informatique mais je pense que ce ne sera pas le langage le plus usité.
En asm il faut beaucoup d'instructions pour effectuer peu de choses. L'asm est adapté pour faire très rapidement (du point de vue temps de calcul) des choses simples. Pour des taches complexes un langage plus structuré est préféré.
tekila_bandita
Messages postés248Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention15 mars 200733 26 févr. 2006 à 14:55
Merci beaucoup,c'est très sympa !
Mais oui, jesavais que l'asm est utile dans de petite tachegrace à sa rapidité, mais en revanche, pour ce qui est des plus gros programmes, il n'est pas adapré dans la mesre ou il faudra ecrire des centaines de lignes, etc...
Mais si j'aimerais apprendre l'asm, c'est parce que j'aimerais me lancer dans la programmation systeme, et reussir a faire mon mini OS avec de l'asm et du C...
Pour l'instant j'en suis très loin, mais je fais déja assez bien du C et du C++...
Mais en tout cas, merci beacoup !
et si jamais certaines autres personnes peuvent me faire part de leur experience, etc, elles sont toujours les bienvenues !