IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

L'assembleur sous Windows est-ce que c'est possible ?


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 17
    Localisation : Burundi

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Septembre 2022
    Messages : 4
    Points : 9
    Points
    9
    Par défaut L'assembleur sous Windows est-ce que c'est possible ?
    Hello World!

    Après avoir passé un temps considérable à pratiquer du C, je me suis maintenant plongé dans l'assembleur !

    J'ai lu pas mal de tutos concernant les bases (sys de numeration, cpu, registes...), après cela quand le moment de la pratique est arrivé j'ai remarquer que tous les tutos que je suivais étaient sur Linux (même ceux en anglais) !
    Par exemple ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    section .data
     
    section .text
    global _start
     
    _start:
            mov eax, 1
            mov ebx, 1
            int 80h
    L'équivalent en C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int main()
    {
        return 0;
    }
    Normalement, quand je lance le programme et qu'après j'affiche la valeur de return avec echo %errorlevel% ça donne 0.
    Mais avec l'assembleur ça donne une autre valeur à chaque fois (presque) et pas 0.
    Pourtant j'ai bien assemblé :
    nasm -f win32 main.asm -o main.o
    ld -m i386 -o main.exe main.o
    J'ai même essayé avec avec une structure de code 64 bits :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    section .text
     
    global _start
     
    _start:
            mov rax, 60 ; syscall number for exit
            mov rdi, 0  ; exit status
            syscall
    Et aucun résultat.
    Mais j'ai installé Ubuntu grâce au WSL (Windows Subsystem for Linux), quand j'affiche la valeur de retour avec echo $? ça ne marche qu'avec la structure de code 64 bits et ça n'exécute pas le 32 bits avec l'erreur "-bash: ./main: cannot execute binary file: Exec format error"

    Du coup je cherche de l'aide pour Windows ou bien avec la WSL, pour m'aider à comprendre pourquoi ça n'exécute pas des exécutables 32 bits alors que mon processeur est 64 bits, merci.

  2. #2
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2019
    Messages : 51
    Points : 86
    Points
    86
    Par défaut
    Bonsoir.
    Le plus simple pour écrire des programmes en assembleur sous windows en 64 bits, c'est d'installer visual studio 2022 à télécharger gratuitement sur le site de microsoft puis de chercher et d'ouvrir X64 native tools command prompt.
    vous pouvez compiler et linker avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ml64  <pgmmame>.asm  /link /ENTRY:main /SUBSYSTEM:console kernel32.lib user32.lib Shell32.lib
    Attention, cet assembleur est l'assembleur MASM64 de microsoft dont la syntaxe est différente de NASM.
    Vous trouverez facilement la documentation sur le site de Microsoft.
    Voici un exemple de programme qui retourne la valeur 10

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ; file simple.asm
    .data
    ; user data
     
    .code
    ; user code
     
     
    fxn PROC public
      mov rax, 10 ; return value
      ret
    fxn ENDP
     
    end

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 967
    Points : 59 730
    Points
    59 730
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Tu peux aussi jeter un oeil au manuel de GoASM de Jeremy Gordon : https://asm.developpez.com/manuels/manuel-goasm/

    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

Discussions similaires

  1. Developper une appli IOS sous windows, est ce possible?
    Par Baradhur dans le forum Développement iOS
    Réponses: 1
    Dernier message: 05/03/2012, 07h51
  2. [ARM] Cherche compilateur Assembleur sous Windows
    Par Kevin12 dans le forum Autres architectures
    Réponses: 6
    Dernier message: 26/11/2009, 17h21
  3. Blog sous serveur windows; est possible?
    Par trialrofr dans le forum ASP
    Réponses: 6
    Dernier message: 26/03/2008, 19h57
  4. Débuter l'Assembleur sous Windows XP
    Par Bibouda dans le forum Assembleur
    Réponses: 2
    Dernier message: 03/12/2005, 02h41
  5. Assembleur sous Windows et sous Linux
    Par Bibouda dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 28/10/2002, 07h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo