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

Assembleur Discussion :

Syntaxe des constructeurs et des compilateurs, compatibilit� des codes, syntaxe, syscall entre Linux et Unix


Sujet :

Assembleur

  1. #1
    Membre tr�s actif
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Par d�faut Syntaxe des constructeurs et des compilateurs, compatibilit� des codes, syntaxe, syscall entre Linux et Unix
    Bonjour � tous.

    Voil�, j'ai quelques questions assez sensibles pour mes projets ; �tant un vrai d�butant, j'ai du mal :

    • il y a deux constructeurs principaux : AMD et Intel (et leurs architectures) ;
    • il y a plusieurs assembleurs : NASM, FASM, MASM, etc. qui utilisent des syntaxes et font la compilation ;
    • il y a plusieurs syntaxes : AT&T, Intel, autre ?
    • il y a plusieurs OS : Linux, Unix, Windows.

    Donc, j'ai un peu d�but� sur NASM sur Linux, une fois j'ai voulu essayer sous Unix le m�me code et �a ne marchait pas (je crois qu'il m'a fallu faire des ajouts pour le faire fonctionner).

    J'aimerais comprendre ce qu'est la syntaxe des constructeurs et ceux des compilateurs.
    La compatibilit� des codes, de la syntaxe, les syscall entre Linux et Unix.

    Merci d'avance.

  2. #2
    Expert confirm�
    Avatar de Kannagi
    Homme Profil pro
    cyber-pal�ontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : cyber-pal�ontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par d�faut
    C'est quoi exactement ta question ?
    Il y a bel et bien 2 constructeurs principaux pour le x86 et donc savoir que ton proc soit intel ou non n'a pas importance en soi vu qu'il se base sur la m�me architecture.
    A ma connaissance la plupart des assembleurs utilise la m�me syntaxe et sur x86 c'est la syntaxe intel qui domine largement , la seule diff�rence entre ces assembleurs c'est les mot cl� propre au assembleur, vu qu'il n'y a pas de r�gle a proprement parl� la dessus , ce qui peut les rendre incompatible entre eux (macro , define ect) .
    Sur X86 toujours il y a bien 2 syntaxes diff�rentes , mais a ma connaissance c'est le seul qui poss�de 2 syntaxes , pour d'autre assembleur c'est souvent qu'une seule syntaxe (qui est impos� par le constructeur en g�n�ral).

    Donc la syntaxe des constructeurs et des compilateurs sont les m�mes , apr�s linux et unix sont l�g�rement diff�rent si tu fais des appel syst�me sachant qu'il y a des l�geres diff�rences normal que tu devra changer quelque truc , assembleur n'est pas un langage portable , on doit r��crire le code pour chaque processeur et OS diff�rents.

  3. #3
    Membre tr�s actif
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Par d�faut
    Merci.
    Vu que unix et linux sont un peu semblable je me disais s'ils sont compatible, il semblerait que oui mais avec des petits changement.
    Je voulais savoir s'il existait que deux syntaxe pour amd et intel, c'est compris.


    Ma question global et principale maintenant est celle-ci:
    Par exemple, sur nasm on ajoute des lignes comme:
    section .data
    section .text
    global _start
    _start:
    etc, je voulais savoir si ceux-ci sont aussi inclus dans la syntaxe de l'assembleur intel ou c'est propre � nasm qui a fait des rajouts.
    Ainsi, je voulais voir si je pouvais utilis� directement la syntaxe intel et le compiler.
    Comme pour �viter une couche en plus que fournirait nasm par rapport � l'assembleur intel.


    Merci encore.

  4. #4
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 305
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 305
    Par d�faut
    En sections, tu devrais toujours avoir .text, .data, .bss (.bss c'est pas obligatoire)
    .text=zone du code
    .data=zone des donn�es initialis�es
    .bss=zone des donn�es non initialis�s

    global _start : c'est le point d'entr�e de ton code. Celui-ci peut varier d'un syst�me � l'autre (c'est ce qu'attend le linker)

    amd et intel sont compatibles, c'est le m�me assembleur. Tu auras des diff�rences sur la gestion du bit NX, sur la gestion de la virtualisation (Intel VT-X contre AMD-V), mais globalement c'est pareil.

    avec les CPUs Intel et AMD, tu peux utiliser la syntaxe Intel ou AT&T, �a c'est un choix au niveau assembleur, nasm utilisera la syntaxe Intel par d�faut, d'autres assembleurs non.

    Pour les processeurs de type ARM , la syntaxe utilis�e sera AT&T.

    GAS (Gnu ASsembler) est multi-plateforme, il peut donc assembler pour Intel, ARM, etc.... Sa syntaxe par d�faut est AT&T, mais tu peux la forcer en Intel avec une directive.

    Enfin concernant la compatibilit�, comme l'as dit Kannagi, l'assembleur c'est pas fait pour �tre portable. Tu as cependant une portabilit� relative sous les r�serves suivantes :

    - pour pouvoir lancer l�ex�cutable, il faut que le syst�me reconnaisse celui-ci, exemple Linux utilise le format ELF, windows le format PE. Il y en a d'autres, moins d�pendus.
    Ensuite, les appels syst�mes ne fonctionnent pas pareil sous Linux et sous BSD par exemple (et encore pire sous windows), pourtant en est toujours sous unix-like. Linux va �tre je crois capable d�ex�cuter les appels syst�mes (info � v�rifier) mais l'inverse ne sera pas le cas.

    Ensuite, il te faut comme sous Windows les bonnes biblioth�ques (.dll sous Windows au format PE, .so sous Linux au format ELF), ton ex�cutable assembl� sous Debian fonctionnera sous Fedora si tu as les bonnes biblioth�ques.

    Le langage C permet de pallier � ce probl�me, il suffit de compiler � partir des sources sur la bonne plateforme pour que �a fonctionne. Tu peux int�grer de l'assembleur dans du code C.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre tr�s actif
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Par d�faut
    Voila qui est parfait.

    Merci � vous.

  6. #6
    Expert confirm�
    Avatar de Kannagi
    Homme Profil pro
    cyber-pal�ontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : cyber-pal�ontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par d�faut
    Citation Envoy� par kripteks Voir le message
    Merci.

    Par exemple, sur nasm on ajoute des lignes comme:
    section .data
    section .text
    global _start
    _start:
    etc, je voulais savoir si ceux-ci sont aussi inclus dans la syntaxe de l'assembleur intel ou c'est propre � nasm qui a fait des rajouts.
    Ainsi, je voulais voir si je pouvais utilis� directement la syntaxe intel et le compiler.
    Comme pour �viter une couche en plus que fournirait nasm par rapport � l'assembleur intel.
    Alors je te l'ai deja dit mais ceci sont des rajouts de nasm ,l'assembleur ce n'est qu'une fa�on lisible du binaire.
    Apr�s ces directives (qui peuvent vari� vu les assembleur mais c'est normal chaqu'un l'�crit comme il le sent)sont obligatoire me semble t-il si on veut pouvoir le compiler pour avoir un ex�cutable ( vu que le format ELF ou PE sont un peu complexe).
    Enfin ce qui rend plus souvent incompatible sont souvent les base , principalement le rajout de point pour certain par exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    .db ou db
    .include ou include
    Sans parl� des directive propre a une architecture ou OS en particulier , le rajout des macro qui est la tr�s diff�rent dans chaque assembleur que j'ai pu test� , et surtout le rajout de label temporaire que j'utilise souvent et qui est totalement diff�rent a chaque assembleur.

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

Discussions similaires

  1. R�ponses: 2
    Dernier message: 28/09/2009, 19h41
  2. R�ponses: 2
    Dernier message: 28/09/2009, 19h41
  3. R�ponses: 2
    Dernier message: 12/08/2005, 19h58
  4. [Compilateur] Optimisation des conditions
    Par Pedro dans le forum Langage
    R�ponses: 2
    Dernier message: 16/06/2004, 13h49
  5. compatibilit� des librairies directX8
    Par Freakazoid dans le forum DirectX
    R�ponses: 3
    Dernier message: 23/05/2002, 21h33

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