for - xcode mac 10.12 6




x86 Assemblage sur un Mac (6)

Aussi, sur les Macs Intel, puis-je utiliser x86 générique asm? ou existe-t-il un jeu d'instructions modifié? Toute information sur l'assemblage de Mac Intel après l'aide.

C'est le même jeu d'instructions; ce sont les mêmes puces.

Est-ce que quelqu'un sait de bons outils (je cherche des IDE) pour écrire l'assemblage sur le Mac. Xcode est un peu lourd pour moi.

Aussi, sur les Macs Intel, puis-je utiliser x86 générique asm? Ou y a-t-il un jeu d'instructions modifié? Toute information sur post Intel.

Aussi: Je sais que sous Windows, asm peut s'exécuter dans un environnement émulé créé par le système d'exploitation pour laisser le code penser qu'il fonctionne sur sa propre machine dédiée. OS X fournit-il la même chose?


Après l'installation de toute version de Xcode ciblant les Mac à processeur Intel, vous devriez être capable d'écrire du code d'assemblage. Xcode est une suite d'outils, dont un seul est l'EDI, vous n'avez donc pas besoin de l'utiliser si vous ne le souhaitez pas. (Cela dit, s'il y a des choses spécifiques que vous trouvez maladroites, s'il vous plaît déposer un bug au bug reporter d'Apple - tous les bugs vont à l'ingénierie.) En outre, l'installation de Xcode installera Netwide Assembler (NASM) et GNU Assembler (GAS); Cela vous permettra d'utiliser la syntaxe d'assemblage qui vous convient le mieux.

Vous voudrez également jeter un coup d'œil sur les guides de compilation et de débogage , car ils documentent les conventions d'appel utilisées pour les diverses architectures sur lesquelles Mac OS X s'exécute, ainsi que le fonctionnement du format binaire et du chargeur. Les conventions d'appel IA-32 (x86-32) en particulier peuvent être légèrement différentes de ce à quoi vous êtes habitué.

Une autre chose à garder à l'esprit est que l'interface d'appel système sur Mac OS X est différente de ce à quoi vous pourriez être habitué sous DOS / Windows, Linux ou les autres versions de BSD. Les appels système ne sont pas considérés comme une API stable sur Mac OS X; à la place, vous passez toujours par libSystem. Cela garantira que vous écrivez du code portable d'une version de l'OS à l'autre.

Enfin, gardez à l'esprit que Mac OS X fonctionne sur un très large éventail de matériels - du simple Core 32 bits au Xeon quad-core haut de gamme. En codant dans l'assemblage, vous pourriez ne pas optimiser autant que vous le pensez; ce qui est optimal sur une machine peut être pessimique sur une autre. Apple mesure régulièrement ses compilateurs et ajuste leur sortie avec le drapeau d'optimisation "-Os" pour être décent sur sa ligne, et il existe de nombreuses bibliothèques de traitement vectoriel / matriciel que vous pouvez utiliser pour obtenir de hautes performances avec des implémentations spécifiques au CPU. .

Aller à l'assemblée pour le plaisir est génial. Aller à l'assemblée pour la vitesse n'est pas pour les faibles de cœur ces jours-ci.


L'exécution du code d'assemblage sur Mac est à seulement 3 pas de vous. Cela peut être fait en utilisant XCODE mais mieux vaut utiliser NASM Command Line Tool. Pour My Ease j'ai déjà installé Xcode, si vous avez installé Xcode c'est bon.

Mais vous pouvez le faire sans XCode.

Il suffit de suivre:

  1. Première installation NASM en utilisant homebrew brew install nasm
  2. convertir le fichier .asm en fichier Obj en utilisant cette commande nasm -f macho64 myFile.asm
  3. Exécutez le fichier Obj pour voir OutPut en utilisant la commande ld -macosx_version_min 10.7.0 -lSystem -o OutPutFile myFile.o && ./64

Le fichier texte simple nommé myFile.asm est écrit ci-dessous pour votre commodité.

global start
section .text

start:
    mov     rax, 0x2000004 ; write
    mov     rdi, 1 ; stdout
    mov     rsi, msg
    mov     rdx, msg.len
    syscall

    mov     rax, 0x2000001 ; exit
    mov     rdi, 0
    syscall

section .data

msg:    db      "Assalam O Alaikum Dear", 10
.len:   equ     $ - msg

Les fonctionnalités disponibles dépendent de votre processeur. Apple utilise le même matériel Intel que tout le monde. Alors oui, générique x86 devrait être bien (en supposant que vous n'êtes pas sur un PPC: D).

En ce qui concerne les outils, je pense que votre meilleur pari est un bon éditeur de texte qui «comprend» l'assemblage.


Oubliez trouver un IDE pour écrire / exécuter / compiler l'assembleur sur Mac. Mais, rappelez-vous que mac est UNIX. Voir http://asm.sourceforge.net/articles/linasm.html . Un guide décent (bien que court) pour exécuter l'assembleur via GCC sous Linux. Vous pouvez imiter cela. Les Mac utilisent des puces Intel, donc vous voulez regarder la syntaxe Intel.






assembly