Apprendre à programmer en Assemblée - Ressources utiles [fermé]

10

À la suite d'un fil précédent, cela m'a intéressé à en apprendre un peu sur la programmation d'assemblage. Pas tellement pour vouloir programmer des applications utiles, juste pour avoir une idée de la programmation de bas niveau pour mieux comprendre ce qui se passe.

Quelqu'un peut-il recommander des livres ou des ressources en ligne pour les débutants?

Merci.

Darren Young
la source
Ce livre du Dr Paul Carter était assez bon pour x86 ASM.
jonescb

Réponses:

5

Livre recommandé: L'art de la programmation en langage d'assemblage .

J'ai aussi aimé ce site . Belle introduction à la programmation d'assemblage! J'ai utilisé ce site comme référence pendant mes études pour mon cours sur les microprocesseurs et microcontrôleurs.

ykombinator
la source
Excellent, merci. Par intérêt, dans quelle mesure l'avez-vous trouvé intuitif par rapport à une langue moderne typique? Mon histoire est de 6 mois c # (dans l'industrie) et à peu près en même temps C ++ (dans ma chambre :))
Darren Young
1
Je suis tombé sur la programmation de l'Assemblée dans mon cours (je suis encore étudiant), et comme vous l'avez dit dans votre question, cela a été utile pour savoir comment fonctionnent les systèmes embarqués et tout. Pourtant, par rapport aux langues de haut niveau (modernes comme vous le dites), je les ai trouvées peu utiles. Vous savez, je ne vais jamais l'utiliser dans mon domaine - le développement web. :)
ykombinator
2

Est-ce un exercice académique ou avez-vous l'intention d'utiliser le langage d'assemblage que vous apprenez? Ce sont des trucs assez spécialisés, de nos jours. L'optimisation du compilateur est devenue si bonne que même quelque chose comme un disque dur haute performance aurait généralement environ 1% de sa base de code écrite en assembleur. En descendant le long de la chaîne alimentaire vers des processeurs 4 bits ou 8 bits, vous verrez beaucoup plus de langage d'assemblage utilisé.

Si vous voulez vraiment vous familiariser avec le langage d'assemblage, choisissez un processeur doté d'un bon jeu d'instructions. Je suis un ancien employé d'ARM, donc je suis probablement partisan, mais j'ai trouvé que le jeu d'instructions ARM était particulièrement facile à apprendre - j'ai pu écrire un filtre FIR efficace en asm lors de mon troisième jour dans l'entreprise. Les partenaires semi-conducteurs d'ARM expédient environ un milliard de cœurs ARM par trimestre ces jours-ci, il est donc assez facile de trouver une entreprise qui est prête à utiliser votre expertise ARM ASM.

Il existe de nombreuses cartes d'évaluation ARM disponibles pour environ 50 $ pour essayer votre code - il semble que ARM Cortex M3 va être extrêmement populaire. Il utilise le jeu d'instructions Thumb2 d'ARM, qui est un peu plus obscur que le code ARM32 ordinaire, mais toujours assez facile et très puissant.

Cette petite planche a l'air très cool, pour 80 euros: http://www.olimex.com/dev/stm32-103stk.html

geekbrit
la source
C'est purement académique / auto-apprentissage. J'aimerais mieux comprendre la gestion de la mémoire de bas niveau ainsi que les langages de niveau supérieur.
Darren Young
1

Fondamentalement, dans le sens de la programmation d'assemblage, vous devez d'abord connaître l'architecture sous-jacente, puis le langage correspondant, par exemple, avec les microcontrôleurs PIC, vous pouvez utiliser le compilateur qui est fourni et le langage. J'utilise ce site pour faire référence aux tutoriels PIC micro-contrôleur.

Abimaran Kugathasan
la source
1

J'ai toujours trouvé que la partie la plus difficile était bonjour le monde, qui n'est généralement qu'une fonction triviale assem appelée à partir d'une langue de niveau supérieur comme l'ajout de deux nombres. Une fois que vous avez franchi cet obstacle, il suffit simplement d'ajouter des instructions et des opérations de suivi (comme définir des données) à votre répertoire.

Je voudrais second geekbrit, même si je n'ai jamais utilisé ARM. Une architecture minimale comme celle-ci serait non seulement plus facile, mais pourrait se rapprocher le plus d'un objectif légitime, par opposition à un objectif didactique uniquement.

Omega Centauri
la source
0

J'ai un jeu d'instructions, un assembleur et un simulateur, avec quelques leçons qui ont été créées juste à cet effet. Je n'ai pas encore de commentaires sur la façon dont j'ai bien ou mal fait, mais c'est là-bas, donnez-lui 15 minutes ou une demi-heure pour voir si cela vous apprend quelque chose. http://github.com/dwelch67/lsasim Après cela, j'ai quelques simulateurs de jeux d'instructions traditionnels que vous pouvez également essayer, simples, sans fioritures, devraient fonctionner partout où vous avez un compilateur C, etc.

old_timer
la source