Version imprimable du sujet
Forums MacBidouille _ La Programmation En Général _ Langage assembleur
Écrit par : TrouthyMcBidouille 8 Jan 2019, 21:08
Bonjour ,
Ce mac book que j'attendais est enfin arrivé aussi Chess me plait bien mais un générateur de cheat code en assembleur serait top. Avec quel assembleur est-il possible de programmer sur Mac Os? Trouthie
Écrit par : yponomeute 8 Jan 2019, 22:31
nasm s'installe avec homebrew par exemple https://formulae.brew.sh/formula/nasm
Écrit par : Jaypee 9 Jan 2019, 10:54
Bienvenue Trouthie,
Pour éviter de "polluer" la machine de tous les jours avec des bibliothèques utilisées une fois puis oubliées, il peut parfois être bon de considérer Docker. (une possibilité, pas une obligation).
Dans mes investigations récentes, j'ai eu besoin d'utiliser un script Python dont les prérequis étaient très différents de la version macOS installée. A partir d'une image Docker encapsulant la version qui allait bien, j'ai pu utiliser le script sans difficulté et sans déstabiliser mon macOS.
@+JP
Écrit par : TrouthyMcBidouille 9 Jan 2019, 13:21
Citation (yponomeute @ 8 Jan 2019, 22:31)
nasm s'installe avec homebrew par exemple https://formulae.brew.sh/formula/nasm
Ok! C'est sympa, merci! Je vais voir, les similitudes sont énormes je pense car Intel oblige, plus rien à voir avec l'époque des Apples équipés de Motorola...
Développez-vous avec l'assembleur?
A plus. Trouthie
Écrit par : audionuma 9 Jan 2019, 14:07
Juste par curiosité :
Qu'est-ce qu'un générateur de cheat code pour un jeu d'échec ?
Pourquoi de l'assembleur pour une application dont le code source est public et sous licence libre ? (https://opensource.apple.com/source/Chess/Chess-318/Sources/)
Écrit par : baron 9 Jan 2019, 14:56
Citation (audionuma @ 9 Jan 2019, 14:07)
Juste par curiosité :
Qu'est-ce qu'un générateur de cheat code pour un jeu d'échec ?
Je suppose que c'est pour gagner des pièces supplémentaires…
Écrit par : TrouthyMcBidouille 9 Jan 2019, 16:04
Le C H E A T C O D E, il a deux fonctions principales, la première d'introduire un sujet de conversation dans le forum et ainsi d'échanger des informations avec des développeurs le cas échéants de prendre des contacts pour bosser en groupe sur un ou plusieurs projets, la deuxième fonction lorsqu'il est correctement programmé est de vous afficher un message codé sur votre écran qui n'a rien de dévastateur rassurez-vous, une fois lu il provoquera chez le joueur des effets semblables aux ptits éléphants roses qui se promènent dans la tête de celui-ci et de la sorte lui fera oublier la branlée qu'il se prend à Chess! Fonction cachée voir le Dark net peut-être...
Je n'ai plus de chocolats ici!
Trouthie
Citation (baron @ 9 Jan 2019, 14:56)
Citation (audionuma @ 9 Jan 2019, 14:07)
Juste par curiosité :
Qu'est-ce qu'un générateur de cheat code pour un jeu d'échec ?
Je suppose que c'est pour gagner des pièces supplémentaires…
Pour les pièces supplémentaires c'est bien vu mais je crois qu'elles se négocient en AppleCoin, non?
Écrit par : TrouthyMcBidouille 9 Jan 2019, 20:29
Citation (Jaypee @ 9 Jan 2019, 10:54)
Bienvenue Trouthie,
Pour éviter de "polluer" la machine de tous les jours avec des bibliothèques utilisées une fois puis oubliées, il peut parfois être bon de considérer Docker. (une possibilité, pas une obligation).
Dans mes investigations récentes, j'ai eu besoin d'utiliser un script Python dont les prérequis étaient très différents de la version macOS installée. A partir d'une image Docker encapsulant la version qui allait bien, j'ai pu utiliser le script sans difficulté et sans déstabiliser mon macOS.
@+JP
Bonsoir, Docker j´ai lu qqchose dessus, je le télécharge l´ínstalle et vois ce que je peux faire avec.
Merci.
A +.
Écrit par : Jaypee 12 Jan 2019, 10:37
Il existe une image Docker:
https://github.com/vladfau/nasm32
Pour l'utiliser, il faut :
- Un compte (gratuit) sur Docker Hub qui est un repo d'images
- docker pull vladfau/nasm32
- docker run -it vladfau/nasm32 bash
exemples dans /usr/share/doc/examples/nasm
Il faut environ 15 minutes départ-arrêté entre démarrer docker et essayer la commande nasm.
Je n'ai pas trouvé les bonnes options de génération du code pour essayer par exemple /usr/share/doc/examples/nasm/lnxhello.asm mais je n'ai aucune expérience pratique dans cet environnement.
Code
root@e8ae58fc3611:~# nasm -f elf ./lnxhello.asm
root@e8ae58fc3611:~# ld -m elf_i386 -o hello lnxhello.o
root@e8ae58fc3611:~# chmod +x ./hello
root@e8ae58fc3611:~# ./hello
Hello, World!
Pour interagir avec des fichiers sur le mac, il faut "mapper" un répertoire du mac avec un chemin existant dans l'image, par exemple /home existe mais est vide
et la syntaxe est:
Code
docker run ... -v /Users/moi/mon répertoire de bidouille:/home ... comme :
docker run -it -v/Users/jaypee/workspaces/Nasm:/home --entrypoint=nasm vladfau/nasm32 -f macho -o /home/hello.o /home/helloWorld.asm
Cela dit, je n'ai pas trouvé les bonnes options pour cross-compiler pour le Mac.
@+ JP
Écrit par : TrouthyMcBidouille 13 Jan 2019, 20:29
Bonsoir, actuellement un sigle docker dans la barre du finder me dit que je suis loggé sur le Docker Hub, la page nasm32 de Vladfau est bien présente mais ensuite...? Le core I7 du mac book ne pourra pas accepter de mover un qword dans rax non?
Écrit par : TrouthyMcBidouille 13 Jan 2019, 21:03
Je me demandais justement si Masm était disponible avec Visual Studio 2017 Mac?
Écrit par : Jaypee 14 Jan 2019, 10:35
Citation (TrouthyMcBidouille @ 13 Jan 2019, 20:29)
Bonsoir, actuellement un sigle docker dans la barre du finder me dit que je suis loggé sur le Docker Hub, la page nasm32 de Vladfau est bien présente mais ensuite...?
... suivre les instructions du cadre à droite: git pull vladfau/nasm32 puis git run -it vladfau/nasm32 bash comme dans ma réponse.
Citation
Le core I7 du mac book ne pourra pas accepter de mover un qword dans rax non?
L'assembleur dispose de directives d'assemblage, des instructions avent le début du code pour définir le contexte, il existe une directive CPU https://www.nasm.us/doc/nasmdoc6.html
On retrouve certaine des directives dans les options comme le -f macho32 ou -f macho64 Apparemment, la documentation de NASM a des chapitre vide pour ces formats MACH-O pour Mac. Soit ils ne sont pas encore supportés, soit les détails sont encore dans la tête des concepteurs.
Note que les exemples de codes sur Développez.com ne sont pas des code génériques, mais des codes liés à MS-DOS (même pas Windows) basés sur l'interruption n°21 qui sur un IBM PC de 1981, permettait d'appeler l'OS, après avoir chargé un numéro de fonction dans le registre ah (la bible pour ce type de code était le Livre du MS/PC-DOS de F.Piette dans les années 80)
Au final, il faudra bien comprendre comment le code produit sera utilisé,
et peut-être qu'il faut émuler un PC pour arriver à ses fins...Quelques réponses dans ce poste sur StackOverflow: https://stackoverflow.com/questions/52563618/how-does-one-compile-a-64-bit-macos-application-with-nasm-application-using-cmak
@+JP
Écrit par : TrouthyMcBidouille 14 Jan 2019, 20:36
Je vais suivre précisément toutes vos indications, ce n'est pas simple de passer sur Mac après 30 années passés sur Pc...ah ah les livres des années 80-90 comme PSI des mines d'or! Mon impression est que la programmation est rendue compliquée de nos jours, bref du rétro pédalage en quelque sorte! Voir ce lien : https://flatassembler.net/download.php
Écrit par : TrouthyMcBidouille 14 Jan 2019, 21:32
Citation (Jaypee @ 12 Jan 2019, 10:37)
Il existe une image Docker:
https://github.com/vladfau/nasm32
Pour l'utiliser, il faut :
- Un compte (gratuit) sur Docker Hub qui est un repo d'images
- docker pull vladfau/nasm32
- docker run -it vladfau/nasm32 bash
exemples dans /usr/share/doc/examples/nasm
les deux commandes ont été exécutées dans terminal par contre il est impossible de trouver le répertoire examples et encore moins de le créer!
Écrit par : Jaypee 16 Jan 2019, 09:24
oui, j'ai interverti deux niveaux de répertoires, désolé :
Code
root@4ec88d7655c0:/# ls -l /usr/share/doc/nasm/examples
total 592
-rw-r--r-- 1 root root 144 May 24 2012 _file_.asm
-rw-r--r-- 1 root root 84 May 24 2012 _version.asm
-rw-r--r-- 1 root root 273 May 24 2012 a32offs.asm
-rw-r--r-- 1 root root 336 May 24 2012 absolute.asm
....
Idem pour fasm, il existe une image docker : https://hub.docker.com/r/guitmz/fasm/
Bonne bidouille !
J-P
PS: Deux commandes de remise à zéro des données docker : plus d'images, ni de process qui tournent, plus d'image en cache, retour à l'état "juste après l'install", avant d'arrêter le service (l'icône de la baleine):
1. docker rm -f $(docker ps -aq)
2. docker rmi -f $(docker images -aq)
Écrit par : TrouthyMcBidouille 16 Jan 2019, 23:26
Citation (Jaypee @ 12 Jan 2019, 10:37)
Il existe une image Docker:
https://github.com/vladfau/nasm32
Pour l'utiliser, il faut :
- Un compte (gratuit) sur Docker Hub qui est un repo d'images
- docker pull vladfau/nasm32
- docker run -it vladfau/nasm32 bash
exemples dans /usr/share/doc/examples/nasm
<= /usr/share/doc/nasm/examples : ok pour les répertoiresIl faut environ 15 minutes départ-arrêté entre démarrer docker et essayer la commande nasm.
Je n'ai pas trouvé les bonnes options de génération du code pour essayer par exemple /usr/share/doc/examples/nasm/lnxhello.asm mais je n'ai aucune expérience pratique dans cet environnement.Code
root@e8ae58fc3611:~# nasm -f elf ./lnxhello.asm
root@e8ae58fc3611:~# ld -m elf_i386 -o hello lnxhello.o
root@e8ae58fc3611:~# chmod +x ./hello
root@e8ae58fc3611:~# ./hello
Hello, World!
Pour interagir avec des fichiers sur le mac, il faut "mapper" un répertoire du mac avec un chemin existant dans l'image, par exemple /home existe mais est vide
et la syntaxe est:
Code
docker run ... -v /Users/moi/mon répertoire de bidouille:/home ... comme :
docker run -it -v/Users/jaypee/workspaces/Nasm:/home --entrypoint=nasm vladfau/nasm32 -f macho -o /home/hello.o /home/helloWorld.asm
Cela dit, je n'ai pas trouvé les bonnes options pour cross-compiler pour le Mac.
@+ JP
root@e8ae58fc3611:~# nasm -f elf ./lnxhello.asm
<= nasm: fatal: unable to open input file `./lnxhello.asmPour le mappage avec des répertoires personalisés il me retourne une erreur! le fichier hello.asm doit se trouver dans quel répertoire en fait?
Désolé pour le temps passé la-dessus.
J suis un boulet...
Écrit par : TrouthyMcBidouille 17 Jan 2019, 11:35
je ne suis pas encore familiarisé avec Terminal, l'époque du shell de cet Amiga 3000 remonte maintenant à une trentaine d'années...vive unix!
Voilà ce que j'obtiens:
Code
Admins-Air:~ admin$ docker run -it -v/Users/admin/RepBidouilles/Nasm:/home --entrypoint=nasm vladfau/nasm32 -f macho -o /home/hello.o /home/helloWorld.asm
nasm: fatal: unable to open input file `/home/helloWorld.asm'
Je pense que le fichier helloWorld.asm n'est pas dans le répertoire souhaité! Mais comment l'y mettre?
à plus, Trouhie
Écrit par : Jaypee 17 Jan 2019, 12:52
On fait un pas en arrière et on admire le tableau
- L'objectif c'est d'assembler des fichiers sources qui existent sur le mac
- On ne veut pas polluer le mac avec les dépendances requises par un outil spécifique, donc on utilise une image Docker qui tourne dans un process isolé appelé container.
Donc le besoin est de permettre à ce process d'accéder aux fichiers du mac. Heureusement il existe une option du démarrage du container qui permet ça. Et il se trouve que l'image a été définie avec un répertoire vide /home.
Donc, imaginons que tu travailles dans un répertoire /Users/admin/RepBidouilles/Nasm, grâce à cette option de démarrage, ce répertoire du mac va être associée à /home dans l'image. Donc ce sera le répertoire partagé entre le mac et le container.
1. On va récupérer le fichier lnxhello.asm. On démarre le container simplement avec l'option -v qui partage le dossier, et on invoque "bash" pour avoir un shell, qui nécessite l'option -i et -t ou -it.
Code
docker run -it -v /Users/admin/RepBidouilles/Nasm:/home vladfau/nasm32 bash
# maintenant on est dans le shell du container
cp /usr/share/doc/nasm/examples/lnxhello.asm /home/helloWorld.asm ==> on copie et on renomme le source de l'exemple dans le dossier partagé
ctrl-D ==> pour quitter
2. On examine que le fichier est bien disponible sur le mac dans le répertoire de bidouille :
Code
cd /Users/admin/RepBidouilles/Nasm
ls -l ./helloWorld.asm
3. On est prêt à appliquer la recette
Là on a vu comment sortir un fichier source du container pour le rendre visible sur le mac. A l'inverse, si tu crées un nouveau source .asm dans ton répertoire sur mac, l'assembleur qui tourne dans le container le verra comme un des fichiers de son /home
J-P
Écrit par : TrouthyMcBidouille 17 Jan 2019, 14:20
C'est pédagogique!
Voualà à quel stade de la recette j'en suis:
Code
Admins-Air:Nasm admin$ cd /Users/admin/RepBidouilles/Nasm
Admins-Air:Nasm admin$ ls -l
total 32
-rw-r--r-- 1 admin staff 972 17 Jan 12:54 helloWorld.asm
-rw-r--r--@ 1 admin staff 9087 17 Jan 11:12 helloworld.asm.rtf
Admins-Air:Nasm admin$ nasm -f elf ./helloWorld.asm
nasm: error: unable to find utility "nasm", not a developer tool or in PATH
Une recette mouuuai...Code
Admins-Air:Nasm admin$ docker run -it -v /Users/admin/RepBidouilles/Nasm:/home vladfau/nasm32 bash
root@689b5c1e9a57:/# nasm -f elf ./helloWorld.asm
nasm: fatal: unable to open input file `./helloWorld.asm'
Je pensais que deux shell ouverts cela était possible!Pour la recette ici son nom se laisse presque deviner... en 5 lettres: L....
Écrit par : TrouthyMcBidouille 17 Jan 2019, 16:39
Bonne nouvelle, c'est tout bon!
Code
root@ed2aac7c2b4d:/# exit
Admins-MacBook-Air:Nasm admin$ docker run -it -v /Users/admin/RepBidouilles/Nasm:/home vladfau/nasm32 bash
root@480da47c4874:/# cd /Users/admin/RepBidouilles/Nasm
bash: cd: /Users/admin/RepBidouilles/Nasm: No such file or directory
root@480da47c4874:/# ls
bin boot dev etc home lib lib32 lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var
root@480da47c4874:/# cd ..
root@480da47c4874:/# cd ..
root@480da47c4874:/# ls
bin boot dev etc home lib lib32 lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var
root@480da47c4874:/# cd /home/
root@480da47c4874:/home# ls
helloWorld.asm helloworld.asm.rtf
root@480da47c4874:/home# nasm -f elf ./lnxhello.asm
nasm: fatal: unable to open input file `./lnxhello.asm'
root@480da47c4874:/home# nasm -f elf ./helloWorld.asm
root@480da47c4874:/home# ld -m elf_i386 -o hello helloWorld.o
root@480da47c4874:/home# chmod +x ./hello
root@480da47c4874:/home# ./hello
Hello, World!
root@480da47c4874:/home#
La recette dans le bon récipient!
Pour la L..... à voir!
A plus et merci.
Trouthie
Écrit par : Jaypee 17 Jan 2019, 20:29
Bravo ! Je garderai un œil sur cette discussion au cas où tu aurais d'autres questions.
@+JP
Écrit par : TrouthyMcBidouille 18 Jan 2019, 08:33
Citation (Jaypee @ 17 Jan 2019, 20:29)
Bravo ! Je garderai un œil sur cette discussion au cas où tu aurais d'autres questions.
@+JP
Oui car il va y en avoir d'autres c'est certain!
Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)