Où puis-je trouver des outils pour apprendre l'assembleur sur OS X? [fermé]

StackOverflow https://stackoverflow.com/questions/137523

  •  02-07-2019
  •  | 
  •  

Question

J'aimerais apprendre l'assembleur. Cependant, il existe très peu de ressources pour assembler sous OS X.

Existe-t-il quelqu'un qui a programmé l'assemblage sur un Mac? Où avez-vous appris?

Et, y a-t-il une raison pour laquelle je ne devrais pas faire de montage? Est-ce que je risque de planter (considérablement) mon ordinateur de manière irréparable?

Était-ce utile?

La solution

Si vous utilisez un Mac PowerPC, examinez l’assembleur en ligne gcc. Sinon, examinez nasm. Je ne peux donner aucune référence décente à PPC ASM (ils sont rares), mais je suggère les choses suivantes pour apprendre x86 asm:

De plus, si vous n'êtes pas en mode noyau, vous n'aurez aucune chance de tout gâcher, et même si vous êtes en mode noyau, il est difficile de détruire quoi que ce soit.

Éditer: Obtenez aussi gcc et autres de XCode, pas Macports ou autres. Si vous ne le faites pas, vous allez vous retrouver dans un monde de fichiers Mach-O malformés. Ce n’est pas amusant de diagnostiquer des problèmes de format de fichier quand on commence à peine à pirater asm.

Autres conseils

Le langage d'assembleur est déterminé par la plate-forme matérielle et non par le système d'exploitation. Étant donné que OS X fonctionne sur la plate-forme Intel et qu’il est 64 bits, vous devez rechercher des informations sur l’assembleur x64 (également appelé AMD64). Consultez l'article de Wikipedia ( http://en.wikipedia.org/wiki/X86-64) pour beaucoup de liens vers la documentation sur x64.

De plus, la documentation sur les outils OS X peut contenir de nombreuses informations sur l'assembleur x64. En particulier, Netwide Assembler (NASM) - http://developer.apple.com /documentation/DeveloperTools/nasm/nasmdoc0.html ) pourrait contenir de la documentation sur la création d'applications OS X à l'aide de l'assembleur.

Pour commencer à apprendre l'assemblage, vous pouvez commencer avec de simples programmes en C et demander à GCC de générer le code de l'assembleur à l'aide de l'option -S:

gcc -S hello.c -o hello.asm

Vous pourrez alors comprendre comment appeler des fonctions, passer des arguments, etc.

Nasm / yasm est votre meilleur pari. La syntaxe inline de gcc est assez invalidante et peut parfois être très pénible à utiliser. De plus, il y a littéralement des choses qu'elle ne peut pas faire. La syntaxe macro de Nasm est également beaucoup plus utile, une aubaine dans un langage tel que l’assemblage qui n’a pas de fonctionnalités de modèles intégrées.

XCode (c.-à-d. GCC) supporte grandement l'écriture en assembleur. C'est une chose amusante à apprendre (bien qu'il soit peu probable que vous en ayez besoin beaucoup), et le pire que vous puissiez faire est de bloquer le programme que vous écrivez, comme en C. Juste pour Google devrait trouver beaucoup de points de départ. Ne vous inquiétez pas, certains sembleront être spécifiques à Linux, ils fonctionneront généralement aussi bien en XCode.

(modifier) ??... en supposant que vous ayez un Mac Intel bien sûr; sinon remplacez "x86" par "ppc".

ici

J'ai programmé l'assemblage sur un Mac. C'était l'assembleur Motorola 680x0 utilisant MPW. J'ai abordé l'assembleur PowerPC à quelques reprises dans CodeWarrior et ProjectBuilder. Maintenant, ProjectBuilder s’appelle XCode et il y a Intel. L’assembleur est l’un des nombreux outils de XCode.

J'ai initialement appris l'assembleur sur Apple II: le moniteur en langage machine 6502 intégré dans la ROM, le mini-assembleur Sweet16, etc. Plus tard, j'ai utilisé l'assembleur Intel 80186 pour accélérer les bits lents de code C, et le travail a été rémunéré pour un cours d'une journée sur l'assembleur Intel 80186 dans une université. Plus tard, je devais maintenir un assemblage de 680x0 pour Mac. C'était il y a longtemps.

Je ne pense pas qu'il y ait de raison de ne pas faire de montage. Apprendre, c'est génial. Apprenez tout ce que vous pouvez. Passez dans un débogueur de niveau suffisamment bas et examinez le code désassemblé.

Mon conseil est:

  

Ne soyez pas effrayé.

Il n'y a aucune raison pour que vous ne le fassiez pas; vous ne pouvez rien faire en langage assembleur avec un langage de niveau supérieur comme C.

En ce qui concerne les outils, vous pouvez installer MacPorts et récupérer l'assembleur GNU. C’est peut-être la solution la plus simple, mais c’est gratuit et vous pouvez probablement trouver une documentation pour l’écriture de programmes Unix dans GNU assembler quelque part sur le net.

Il y a deux choses que vous devez savoir pour écrire le langage d'assemblage sur un système doté d'un système d'exploitation (par opposition à un assemblage "nu-metal" qui est un monde à part):

  1. Fonctionnement du jeu d’instructions - chargement de ressources pour Intel X86 si vous avez un Mac Intel, ensemble toujours raisonnable pour PPC, par exemple Mac OS X internes .

  2. Comment assembler vos programmes - Si vous avez les outils de développeur installés, vous avez GCC et les outils associés

  3. Comment parler au système d’exploitation - c’est ici que l’assemblage Mac est un lot moins bien documenté que Windows ou Linux. Il se peut que vous deviez écrire des programmes C équivalents et utiliser «gcc -S» pour voir quelles conventions de restauration des appels / piles sont appropriées. Cela dépend de ce que vous voulez faire, mais au minimum, vous avez besoin d’appels système pour l’allocation d’IO et l’allocation de mémoire.

Un bon point de départ est ici .

Si Outils de développement est installé, vous pouvez simplement ouvrir Terminal et taper comme ( Assembleur GNU - composant de Binutils ).

Pour PPC, essayez Lightsoft

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top