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

Raspberry Pi Discussion :

Compilation nasm 32/64bit


Sujet :

Raspberry Pi

  1. #1
    Membre averti
    Homme Profil pro
    Recherche, Comprendre, apprendre et encore recherche !
    Inscrit en
    Janvier 2019
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activit� : Recherche, Comprendre, apprendre et encore recherche !

    Informations forums :
    Inscription : Janvier 2019
    Messages : 38
    Par d�faut Compilation nasm 32/64bit
    Bonsoir,
    Je me suis mis depuis quelque jour � faire de l'assembleur sur rasberry pi. Etant d�butant sur linux j'ai suivis un tuto.
    Sauf que je compile en 32 ou 64bit, j'ai toujour cet erreur:
    file not recognized: file format not recognized
    Que faut-il que je fasse pour ne plus avoir ce probl�me ?

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du pr�sident Ulysses S. Grant !
    Inscrit en
    F�vrier 2011
    Messages
    6 889
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Agent secret au service du pr�sident Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 6 889
    Par d�faut
    Salut matrob72.

    Vous vous �tes tromp�s de didacticiel. Il est consacr� � "x86 / x64".
    Comme vous utilisez la raspberry, il vous faut un assembleur "ARM".
    --> http://www.science.smith.edu/dftwiki...e_Raspberry_Pi

    Voici un fichier "makefile" :
    Code makefile : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    # ----------------------------- #
    #   Déclaration des Commandes   #
    # ----------------------------- #
     
    RM      = @rm -rf
    ASM     = @as
    CC      = @gcc
    EX      = @chmod +x
     
    # -------------------------- #
    #   Déclaration des Objets   #
    # -------------------------- #
     
    SRC     = $(wildcard *.asm)
    OBJ     = $(SRC:.asm=.o)
    BIN     = hello
     
    # --------------------------------- #
    #   Déclaration des Bibliothèques   #
    # --------------------------------- #
     
    LIBS    =
     
    # ------------------------------ #
    #   Déclaration des Paramètres   #
    # ------------------------------ #
     
    FLAG1   =
     
    FLAG    = $(FLAG1)
     
    # ------------------------------------ #
    #   Compilation et Edition des liens   #
    # ------------------------------------ #
     
    all: clean $(BIN) after
     
    .PHONY: clean
     
    clean:
            $(RM) $(OBJ)
            $(RM) $(BIN)
     
    $(BIN): $(OBJ)
            $(CC)  $(OBJ) -o $(BIN) $(LIBS)
     
    $(OBJ): $(SRC)
            $(ASM) $(SRC) -o $(OBJ) $(FLAG)
     
    after:
            $(RM) $(OBJ)
            $(EX) $(BIN)
    Comment l'utiliser ?
    Vous cr�er un fichier de nom "makefile" et vous ins�rez ce que je viens de vous donner.
    Vous cr�ez aussi un fichier de nom "hello.asm" (pour le programme, voir le lien ci-dessus).

    Pour l'assembler, vous tapez "make".
    Vous aurez l'ex�cutable sous le nom de "hello".

    @+

  3. #3
    Membre averti
    Homme Profil pro
    Recherche, Comprendre, apprendre et encore recherche !
    Inscrit en
    Janvier 2019
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activit� : Recherche, Comprendre, apprendre et encore recherche !

    Informations forums :
    Inscription : Janvier 2019
    Messages : 38
    Par d�faut
    Bonjour,
    merci beaucoup votre explication a r�solue mon probl�me.
    J'ai mis ma question dans ce forum car je pensais que mon probl�me �tait li� � un probl�me de droits des fichiers comme j'ai d�j� eu beaucoup de probl�me dessus.

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du pr�sident Ulysses S. Grant !
    Inscrit en
    F�vrier 2011
    Messages
    6 889
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Agent secret au service du pr�sident Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 6 889
    Par d�faut
    Salut matrob72.

    Avez-vous utilisez mon makefile ?
    Cela permet de ne pas retaper � chaque fois, les param�tres de l'assemblage.

    Cordialement.
    Artemus24.
    @+

  5. #5
    Membre averti
    Homme Profil pro
    Recherche, Comprendre, apprendre et encore recherche !
    Inscrit en
    Janvier 2019
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activit� : Recherche, Comprendre, apprendre et encore recherche !

    Informations forums :
    Inscription : Janvier 2019
    Messages : 38
    Par d�faut
    Bonsoir Artemus24
    Effectivement, j'ai bien utilis� votre makefile.
    Apr�s avoir �tudi� l'assembleur arm, j'ai eu quelques probl�mes.
    Y auraient-t-ils un tuto assez complet pour ce genre d'assembleur ?
    Les interruptions syst�me existe-t-il ? (je n'ai pas trouv� d'instruction pour)
    J'ai commenc� � faire un serveur, mais j'ai eu quelques probl�me au niveau de l'activation du socket (bind). Pouvez vous jeter un �il ?
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    .equ AF_INET, 2
    .equ SOCK_DGRAM, 2
    
    	.struct  0
    sin_family:              @ famille : AF_INET
        .struct  sin_family + 2 
    sin_port:               @ le num�ro de port
       .struct  sin_port + 2 
    sin_addr:                @ l'adresse internet
        .struct  sin_addr + 4 
    sin_zero:                @ un champ de 8 z�ros
    	.struct  sin_zero + 8
    sin_fin:
    
    
    .data
    msg1: .asciz "Demarrage du serveur...\n" 
    sock: .word 0
    sinsize: .word 0
    sinServ:	.skip sin_fin
    sinCli:	.skip sin_fin
    
    .text
    .global main
    .extern printf
    .extern socket
    .extern connect
    .extern recv
    .extern close
    .extern htons
    .extern htonl
    .extern bind
    .extern listen
    .extern accept
    
    main:
    push {ip,lr}
    
    ldr r0,=msg1
    	bl printf
    mov r0,#2;mov r1,#2;mov r2,#0
    	bl socket
    ldr r1,=sock;str r0,[r1]	@stockage socket
    
    ldr r6,=sinServ   @select sin
    
    mov r0,#0
    	bl htonl
    str r0,[r6,#sin_addr]
    mov r0,#AF_INET;strh r0,[r6,#sin_family]	  @sin.sin_family = AF_INET;
    mov r0,#80
    	bl htons
    
    strh r0,[r6,#sin_port]   @sin.sin_port = htons(80);
    ldr r0,=sock;ldr r0,[r0]
    mov r1,r6;add r1,#sin_family
    mov r2,#sin_fin
    	bl bind
    
    ldr r0,=sock;ldr r0,[r0]
    mov r1,#0
    	bl listen
    mov r5,#0
    boucle:
    ldr r0,=sinsize;mov r1,#16;str r1,[r0] @sinsize=16
    @suite code
    
    add r5,#1
    mov r0,#3;cmp r0,r5;bne boucle
    pop {ip,pc}
    Merci de votre aide.

  6. #6
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du pr�sident Ulysses S. Grant !
    Inscrit en
    F�vrier 2011
    Messages
    6 889
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Agent secret au service du pr�sident Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 6 889
    Par d�faut
    Salut matrob72.

    Je devrais m'y mettre aussi � l'assembleur de la raspberry.
    D�sol� de ne pouvoir faire plus.

    Je connais l'assembleur IBM370 sur gros syst�me.
    Ainsi que les assembleurs 6502, 8080, 68000 ceux illustr�s par Rodnay Zaks, il y a fort longtemps.

    @+

  7. #7
    Membre averti
    Homme Profil pro
    Recherche, Comprendre, apprendre et encore recherche !
    Inscrit en
    Janvier 2019
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activit� : Recherche, Comprendre, apprendre et encore recherche !

    Informations forums :
    Inscription : Janvier 2019
    Messages : 38
    Par d�faut
    Salut Artemus24,
    Ce n'est pas grave, merci quand m�me de ton aide.

  8. #8
    Membre �clair�
    Homme Profil pro
    retrait�
    Inscrit en
    Avril 2019
    Messages
    53
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 76
    Localisation : France, Pyr�n�es Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : retrait�

    Informations forums :
    Inscription : Avril 2019
    Messages : 53
    Par d�faut
    Bonsoir.
    Quel est l'erreur rencontr�e ?
    S'il s'agit de :
    Demarrage du serveur...
    Instruction non permise

    Vous devez revoir la terminaison de votre programme : un appel au call system Exit serait plus propre.

  9. #9
    Membre �clair�
    Homme Profil pro
    retrait�
    Inscrit en
    Avril 2019
    Messages
    53
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 76
    Localisation : France, Pyr�n�es Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : retrait�

    Informations forums :
    Inscription : Avril 2019
    Messages : 53
    Par d�faut
    Bonsoir.
    Je devais �tre fatigu� lors de ma r�ponse � votre probl�me de serveur en assembleur Arm sur raspberry.
    Bon je reprends votre programme : je ne sais pas o� vous avez r�cup�r� la trame mais au vu des caract�res d�limitant les commentaires il s'agit d'un m�lange d'instructions pour le compilateur nasm (;) et le compilateur gas (@) faisant appel en plus � des fonctions du langage C.
    Si vous voulez �crire un programme en assembleur ARM en utilisant les appels systeme Linux (en assembleur ARM, on ne fait pas appel aux interruptions) pour g�rer les sockets, vous pouvez vous inspirer du programme d�crit ici :
    https://assembleurarmpi.blogspot.com...ets-acces.html

    Mais apprendre l'assembleur Arm en commen�ant par les sockets n'est pas la meilleure fa�on. Vous trouverez un cours (en anglais) ici :
    https://thinkingeek.com/arm-assembler-raspberry-pi/

    Enfin j'ai repris l'id�e d'�crire les programmes d'un ensemble client serveur que vous trouverez ici :
    https://github.com/vincentARM/Arm-as...r/ProjetSocket

    Il s'agit de programmes qui s�ex�cutent en assembleur 32 bits sur des raspberry 2 et 3 mais ils peuvent aussi s�ex�cuter sur des vieux t�l�phones Android 32 bits avec l'application Termux. J'ai pu les faire fonctionner avec le client sur android et le serveur sur raspberry.
    Et apr�s quelques d�boires, avec le serveur sur Android et le client sur Raspberry.
    Bien s�r, ces programmes ne sont pas complets mais peuvent servir de base.
    Bon courage.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [Sydney] Compilation vers iOS 64bits
    Par Carmichael dans le forum Composants FMX
    R�ponses: 3
    Dernier message: 24/06/2020, 22h49
  2. probleme compilation sous debian 64bits
    Par 4nth0nym3 dans le forum C++
    R�ponses: 5
    Dernier message: 01/03/2017, 20h28
  3. diff�rencier compil 32bit ou 64bit
    Par vinceouille dans le forum MinGW
    R�ponses: 0
    Dernier message: 18/07/2013, 18h06
  4. [OCILIB] compilation sur sun 64bits
    Par joce3000 dans le forum Interfaces de programmation
    R�ponses: 3
    Dernier message: 02/06/2009, 15h06
  5. [TASM/NASM] Compilation boot
    Par Mercenary Developer dans le forum Assembleur
    R�ponses: 1
    Dernier message: 22/01/2007, 15h27

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