web-dev-qa-db-fra.com

Où apprendre l'assemblage x64?

Bon alors je connais C++, C #, Java et quelques autres langages et j'ai décidé d'apprendre l'assemblage ensuite mais j'ai l'impression d'avoir frappé un mur de briques solides dès le début. J'ai juste besoin de quelqu'un pour me diriger dans la bonne direction.

Voici les questions:

  1. On m'a dit qu'il vaut mieux apprendre l'assemblage sur Internet que dans les livres, car l'assemblage dépend de votre matériel et les livres sont pour la plupart dépassés. Est-ce vrai?

  2. J'ai un processeur 64 bits et j'utilise (ou du moins j'essaie d'utiliser) FASM. Où puis-je trouver la documentation nécessaire?

  3. Je suis totalement confus parce que la plupart des tutoriels que j'ai vus ne fonctionnent même pas pour moi. Est-ce à cause des différences matérielles? Comment trouver les bons tutoriels?

  4. Puis-je exécuter l'assemblage x86 et x32 sur mon ordinateur 64 bits?

  5. Pourriez-vous s'il vous plaît être si gentil et m'écrire un programme simple dans Assembly (qui fonctionne sur mon PC) avec une ventilation dans les commentaires? J'utilise Windows 10 64 bits sur mon processeur Intel Core i5. S'il vous plaît.

36
AlanKalane

Je pense que c'est une question valable. Il peut être un peu difficile de trouver des informations à jour sur l'assembleur.

  1. Oui. De nombreuses ressources imprimées et en ligne décrivent l'assembleur i386 (x86) et non le nouveau AMD64 (x86_64). Beaucoup de choses ont changé, par exemple Les arguments de fonction étaient auparavant passés sur la pile mais maintenant ils sont passés dans les registres. Cela s'applique à la fois à Unix et à Windows.

    Fondamentalement, assurez-vous de lire à propos de l'assemblage 64 bits.

  2. Pourquoi ne pas essayer le manuel en ligne . Notez que les assembleurs ne sont pas si différents quand il s'agit de choses simples.

  3. Je n'ai pas Windows, mais si vous rencontrez des problèmes avec un programme spécifique, vous pouvez le demander ici. Vous devrez publier le programme ayant échoué.

  4. Oui, mais vous devez le lier aux bibliothèques 32 bits et utiliser la version 32 bits de l'API Win32. Mais si vous débutez, pourquoi programme dans les années 1980 quand vous pouvez travailler avec le jeu d'instructions moderne?

  5. Essayez ceci .

Aussi , si vous prévoyez de programmer dans Assembly, je vous recommande fortement d'obtenir un débogueur. J'utilise GDB qui fonctionne bien et est gratuit, sur Windows, vous pouvez utiliser le débogueur Visual Studio qui est superbe.

37
jforberg