Ergebnis 1 bis 8 von 8

Thema: Assemblerroutinen in C/C++ Code unter Linux!!

  1. #1
    Member
    Registriert seit
    Jul 2000
    Beiträge
    70
    Renommee
    10

    Post Assemblerroutinen in C/C++ Code unter Linux!!

    Ich bin mir nicht sicher ob dieses Posting auch hier hin gehört...aber da das Problem doch irgendwie mehr mit Assembler zu tun hat dachte ich mir, ich poste es hier...ihr könnt es ja verschieben, wenn es in ein anderes Forum besser passt.

    Mein Problem ist, dass ich gerne wissen würde wie ich einen AssemberlCode in ein C/C++ Programm unter Linux einbinde....



  2. #2
    Member
    Registriert seit
    May 2000
    Beiträge
    976
    Renommee
    10

    Post

    Da hast du eigentlich 2 Möglichkeiten: entweder du benutzt den Inline-Assembler vom Compiler (wahrscheinlich GCC), dann aber im AT&T-Syntax, oder NASM mit dem "normalen" Intel-Syntax.

  3. #3
    Member
    Registriert seit
    Jul 2000
    Beiträge
    70
    Renommee
    10

    Exclamation

    Aha...beschreibe das näher..bitte...wie sieht das dann in der Praxis aus???

    Bei g++/gcc??
    Anders???



  4. #4
    Member
    Registriert seit
    May 2000
    Beiträge
    976
    Renommee
    10

    Post

    gcc ist in dem Fall dasselbe wie g++. Inline-Asm sieht ungefähr so aus:
    __asm("movl $5, %eax");

    Das wäre in Intel Syntax (zumindest ungefähr):
    mov eax, 5

    Ich habe AT&T Syntax nie richtig ausprobiert, ich weiß nur, dass die Operanden vertauscht sind, und die Befehle einen extra-Buchstaben für die Op-Größe haben, und die Bezeichner ein Zeichen-Präfix (z. B. % für Register), und noch ein paar andere nervige Sachen... Außerdem ist gas (gnu assembler) mehr als Back-End für GCC gedacht, nicht als eigener Assembler, hat deswegen nur minimales error-checking usw, deshalb benutzt den kaum jemand. Steht alles in den FAQs Nimm lieber Nasm, und link die Objektdatei mit in deine executable.

    Bsp:

    nasm -f elf stuff.asm -ostuff.o
    g++ source.c stuff.o -oprog

    Oder so ähnlich. Vielleicht auch -f coff statt -f elf, kommt glaube ich auf dein System an.


  5. #5
    Violinengott
    Registriert seit
    May 2000
    Beiträge
    705
    Renommee
    158

    Post

    Dazu habe ich jetzt aber auch eine Fragen:
    Wie ja so einigen Bekannt bin ich am machen einer Klasse, die das Rechnen mit unentlich langen Zahlen ermöglicht. Ich benutze da recht viel Assembler in Form von Inline-Assembler, da das anders gar nicht lösbar ist, und darum Frage ich mich, wie ich das ins Linux portiere, ohne dass ich den ganzen Assembler-Code in AT & T syntax umwandle. Den kann ich nämlich nicht.



  6. #6
    Member
    Registriert seit
    May 2000
    Beiträge
    976
    Renommee
    10

    Post

    Nimm Nasm. Mach dir einfach Funktionen für die Rechenarten, die du benutzt. Warum sollte man das mit Inline-Asm machen, mit Funktionen ist das doch viel praktischer. Oder du suchst dir einen Compiler, der Intel-Syntax und COFF (echtes, nicht Windows-Coff) unterstützt. Weiß nicht ob es sowas gibt.

    Was machst du dann eigentlich mit dem Programm, ich weiß zwar dass es um RSA (?) geht, aber machst du das nur zum Spaß oder was hast du damit vor? Interessehalber.

  7. #7
    Violinengott
    Registriert seit
    May 2000
    Beiträge
    705
    Renommee
    158

    Post

    Also, ich mache das im moment zusammen mit tachyon, das ganze lauft aber unter dem Programmierteam das ich gegründet habe/am gründen bin. Das Ziel wird sein, ein Verschlüsslungsprogramm zu haben, das die Datei vollkommen mit RSA verschlüsselt, also nicht so wie in PGP nur den Schlüssel einer symetrischen Verschlüsselung mit RSA verschlüsselt wird. Das das ganze nicht das schnellste Programm wird, wissen wir auch selber, aber darum geht es uns auch nicht, es geht mehr um die Herausforderung, etwas zu programmieren, das bis jetzt noch nicht gemacht wurde bzw. noch nicht open-source vorgelegt ist.
    Danach wollen wir für dieses Programm eine einheitliche GUI haben, die wir dann für so viele wie möglich Plattformen implementieren:
    -Gnome
    -KDE
    -Windows
    -evt. Mac
    ...

    Ich habe jetzt eben gerade mal diese Klasse so weit, dass sie alle Punkt-Strich Operationen und alle logischen Operationen kann. Schwierig wird es mit der Potenzierung, denn da muss ich eine Algo finden, denn ich kann ja nicht gut 2^128 mal eine Zahl mit sich selber multiplizieren.



  8. #8
    Member
    Registriert seit
    May 2000
    Beiträge
    976
    Renommee
    10

    Post

    Aha. Dann würde ich dir wirklich Nasm empfehlen, dann hast du schon mal Windows und Linux abgedeckt, wahrscheinlich sogar ohne eine Zeile Code zu ändern. Der Mac hat sowieso einen anderen Prozessor.

    Wegen dem Team, wäre nett wenn du mich ein bisschen auf dem laufenden halten könntest, was läuft. Das RSA-Programm ist zwar nicht so mein Ding, aber vielleicht mache ich mal bei einem anderen Projekt mit.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Wlan stärker unter Win als unter Linux
    Von DaBenji im Forum Wireless LAN
    Antworten: 6
    Letzter Beitrag: 14.08.2007, 13:07
  2. Antworten: 9
    Letzter Beitrag: 21.02.2005, 06:34
  3. Stolen SCO Code in Linux cannot be displayed...
    Von unex im Forum Good Sites & Services
    Antworten: 9
    Letzter Beitrag: 05.02.2004, 16:58
  4. Antworten: 0
    Letzter Beitrag: 15.09.2003, 21:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •