2008-09-26 5 views
22

Je voudrais apprendre l'assembleur. Cependant, il y a très peu de ressources pour faire l'assembleur avec OS X.Où puis-je trouver des outils pour apprendre l'assembleur sous OS X?

Y at-il quelqu'un là-bas qui a programmé en assembleur sur un Mac? Où avez-vous appris?

Et, y a-t-il une raison pour laquelle je ne devrais pas faire l'assemblage? Dois-je risquer (de façon significative) de provoquer un crash irrémédiable de mon ordinateur?

Répondre

13

Si vous utilisez un Mac PowerPC, recherchez dans l'assembleur en ligne gcc. Sinon, regardez dans Nasm. Je ne peux pas donner des références convenables à PPC ASM (ils sont peu nombreux), mais je suggère les choses suivantes pour apprendre x86 asm:

aussi, si vous n'êtes pas en mode noyau alors il n'y a aucune chance de tout vider, vraiment, et même si vous êtes en mode noyau, il est difficile de vraiment détruire quoi que ce soit.

Éditer: Aussi, obtenir gcc et tel de XCode pas Macports ou quelque chose. Vous êtes dans un monde de fichiers Mach-O malformés si vous ne le faites pas. Pas amusant de diagnostiquer les problèmes de format de fichier lorsque vous commencez juste à pirater ASM.

+0

+1 sur le livre de retournement - excellent livre. –

0

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

En ce qui concerne les outils, vous pouvez installer MacPorts et obtenir l'assembleur GNU. C'est peut-être le moyen le plus facile, mais c'est gratuit et vous pouvez probablement trouver la documentation du tutoriel pour écrire des programmes Unix dans l'assembleur GNU quelque part sur le net.

1

XCode (c'est-à-dire GCC) a un grand support pour l'écriture de l'assembleur. C'est une chose amusante à apprendre (bien que vous n'ayez probablement pas besoin de beaucoup), et le pire que vous pouvez faire est de planter le programme que vous écrivez, comme dans C. Just Google pour 'gcc inline asm x86 tutorial' et vous devrait trouver beaucoup de points de départ. Ne vous inquiétez pas que certains seront spécifiques à Linux, ils fonctionneront généralement aussi bien dans XCode.

(edit) ... en supposant que vous avez un Mac Intel bien sûr; sinon, remplacez 'x86' par 'ppc'.

3

Nasm/yasm sont votre meilleur pari; La syntaxe en ligne de gcc est assez invalidante et peut être très pénible à utiliser à la fois, plus il y a littéralement certaines choses que ne peut pas faire. La syntaxe macro de Nasm est également beaucoup plus utile, une aubaine dans un langage comme l'assemblage qui n'a pas de fonctionnalités de création de modèles.

5

La langue de l'assembleur est déterminée par la plate-forme matérielle et non par le système d'exploitation. Étant donné que OS X s'exécute sur la plate-forme Intel et est en 64 bits, vous devez rechercher des informations sur l'assembleur x64 (également appelé AMD64). Vérifiez l'article Wikipedia (http://en.wikipedia.org/wiki/X86-64) pour beaucoup de liens vers la documentation sur x64. En outre, la documentation des outils OS X peut contenir beaucoup d'informations sur l'assembleur x64. En particulier, le Netwide Assembler (NASM - http://developer.apple.com/documentation/DeveloperTools/nasm/nasmdoc0.html) peut avoir une documentation sur la façon de construire des applications OS X en utilisant assembler.

+0

Apprendre x86-64 ASM avant d'apprendre x86 ASM est comme écrire un poème épique avant d'avoir appris votre premier mot.Il y a tellement de choses qui vont faire voyager de nouvelles personnes. Certainement pas recommandé. –

+0

Il faut un effort pour écrire une application OSX 64 bits; ils sont 32bit par défaut. –

+0

Accordé, je ne suis pas un développeur Mac. Cependant, OSX est 64-bit et http://www.apple.com/macosx/technology/64bit.html revendications Xcode 3.0 prend en charge la construction d'applications 64 bits, n'est donc pas seulement une question de choix du développeur? Et sachant ce que vous faites bien sûr, mais cela vaut également pour la construction d'applications 32 bits. –

1

here

Je programmé le montage sur un Mac. C'était un assembleur Motorola 680x0 utilisant MPW. J'ai abordé quelques fois l'assembleur PowerPC 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 d'abord appris l'assembleur sur l'Apple II: le moniteur de langage machine 6502 construit en ROM, le mini-assembleur Sweet16, et d'autres. Plus tard, j'ai utilisé l'assembleur Intel 80186 pour accélérer les bits lents du code C, et j'ai payé pour un cours d'un jour sur l'assembleur Intel 80186 dans une université. Plus tard, j'ai dû maintenir un assemblage 680x0 pour le Mac. C'était il y a très longtemps.

Je ne pense pas qu'il y ait une raison de ne pas faire l'assemblage. Apprendre c'est bien. Apprenez tout ce que vous pouvez. Déposez-vous dans un débogueur de niveau assez bas et regardez le code désassemblé.

Mon conseil est:

Ne pas avoir peur.

5

Pour commencer l'assemblage d'apprentissage, vous voudrez peut-être commencer par des programmes simples C et demander à GCC pour générer le code assembleur pour l'aide de l'option -S:

gcc -S hello.c -o hello.asm 

Vous serez alors en mesure de comprendre comment appeler des fonctions, passer des arguments, etc.

0

Il y a deux choses que vous devez savoir pour écrire le langage assembleur sur un système avec un système d'exploitation (par opposition à l'assemblage «nu» qui est un monde à part):

  1. Comment l'ensemble d'instructions fonctionne - des charges de ressources pour Intel X86 si vous avez un Mac Intel, encore un ensemble raisonnable pour PPC par exemple Mac OS X Internals.

  2. Comment assembler un lien entre vos programmes - si vous avez les outils de développement installés vous avez GCC et les outils associés

  3. Comment parler du système d'exploitation - ici est où l'assemblage Mac est un beaucoup moins bien documentés 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 d'appel/pile sont appropriées. Cela dépend de ce que vous voulez faire, mais à un miniumum, vous avez besoin d'appels système OS pour les E/S et l'allocation de mémoire.

Un bon point de départ est here.

0

Si vous avez Developer Tools installé, vous pouvez simplement ouvrir Terminal et le type comme (GNU Assembler - une partie de Binutils).

0

Pour PPC essayez Lightsoft

+0

Le site ne fournit plus de logiciel PPC. – Seki

Questions connexes