J'ai utilisé une langue de montage étape par étape pour apprendre la programmation de la langue de l'Assemblée sur Linux. J'ai récemment reçu un Mac, sur lequel Voulez-vous simplement savoir s'il existe une bonne référence (livre / page Web) qui donne les différences B / W l'assemblage Standard Unix Assembly et Darwin. P> int 0x80 code> ne semble pas fonctionner (instruction illégale). p>
3 Réponses :
À des fins pratiques, cette réponse montre Comment compiler un Hello World em> application en utilisant nasme strud> sur OSX .
Ce code peut être compilé pour Linux, mais la commande CMD-Line à compilerait probablement : p> assembler la source (bonjour.nasm) à un fichier d'objet: p> ld -o hello -e mystart hello.o
Mais le mécanisme d'appel système est-il identique à Linux? Je sais que Solaris pour un diffère.
La syntaxe peut changer beaucoup d'un compilateur à un autre et qui inclut différents formats d'instructions et conventions d'appel.
La vraie différence est que vous devez donner 4 octets supplémentaires dans des fichiers binaires de machy 32 bits. Il vient du patrimoine BSD. Voir ma réponse pour un lien
Pouvez-vous publier votre code et comment vous avez compilé? (Il existe de nombreuses façons de susciter des erreurs d'instructions illégales) p>
OSX a ramassé le style BSD d'arguments de passage, c'est pourquoi vous devez faire une chose légèrement différemment. p>
Je l'ai marqué cela il y a un moment: http://www.freebsd.org/doc/en/books/developers-handbook/book.html#x86-System-calls p>
Cette question aidera probablement: Liste de la documentation et de la documentation pour les appels de systèmes pour le noyau XNU à OSX . P>
Malheureusement, il semble que le livre mentionné il y a le seul moyen de le savoir. En ce qui concerne INT 0X80, je doute que cela fonctionnera car c'est une API spécifique assez Linux qui est construite directement dans le noyau. P>
Le compromis que je fais lorsque vous travaillez sur un système d'exploitation inconnu, il suffit d'utiliser des appels libc, mais je peux comprendre que même cela peut être trop élevé si vous cherchez simplement à apprendre. P>