skip to main content

kiesler.at

Alpha C Inline-Assembler
updated by rck, 2004-10-08

C war schon seit Anfang an eine sehr maschinennahe Programmiersprache. Dadurch entstanden einerseits Probleme wie Bufferoverflows ('effizientes' Speichermanagement). Andererseits wichtige Konzepte wie Inline-Assembler. Inline-Assembler ist oft nicht nur einfacher zu durchschauen, weil der C-Compiler das ,,Housekeeping'' (Adressen-Ausrichtung, etc.) macht. Sondern auch fast so effizient wie ,,pure Assembler''.
                     
1 | 2 | 3 | 4 | 5 | 6

Fazit

Seit ich das Inline-Assemblerkonzept kenne, habe ich mich immer wieder vor "purem" Assembler gedr�ckt. Bis jetzt jedes mal erfolgreich. Und die eingesparte Zeit kann man dann zB f�r das Schreiben solcher Tutorials verwenden... ;-)

Inline-Assembler spielt seine wahren St�rken bei Speicherzugriffen (Stichwort: Alignment) und Schleifen (Stichwort: Label) aus. Auch bei kleinen Aufgabenstellungen, f�r die ein "richtiges" Assemblerprogramm zu m�hsam w�re, kann man mit Inline-Assembler Performance gewinnen (siehe asma).

Referenzen

High Performance Alpha Linux: Inline assembler sample code for gcc

Ein relativ langes Posting zum Thema High Performance Computing, in welchem ein umfangreiches Inline-Assemblerprogramm vorgestellt wird. Zeigt im wesentlichen, dass man mit Inline-Assembler nicht nur an Performance gewinnen sondern auch (drastisch) an �bersicht verlieren kann.


Linux-Alpha Archive: wh64 (slow)

Von der Codestruktur wird hier Alpha-Inlineassembler sehr �berzeugend dargestellt. Meine Hauptwissensquelle f�r asma und asmb!


Using the GNU Compiler Collection (GCC): DEC Alpha Options

Hat mir den rechten Weg zu Compilerparametern gewiesen. Stichwort: gcc -mcpu=ev6


Viel Spa� mit Inline-Assembler // Ren� C. Kiesler!
                     
1 | 2 | 3 | 4 | 5 | 6



RSSComments - Make a comment
The comments are owned by the poster. We are not responsible for its content.
  • Eleganter

    Posted on 2004-05-22 01:25:06 By rck[110]

    static inline long
    __attribute__ ((unused))
    count_population (volatile long val)
    {
    long ret;

    __asm__ __volatile__ (
    "ctpop %1,%0\n\t"
    : "=&r"(ret)
    : "r"(val));

    return ret;
    }

    So meinte ich das im Informatikforum. Wof�r das attribute(unused) ist, wei� ich auch nicht genau, aber bei der glibc wird's immer so geschrieben, wird schon nicht so falsch sein.

    Und bei deinem ersten Beispiel w�rd ich das "not" weglassen und stattdessen bei den Eingangs-Constraints einfach ~a statt a schreiben - das gibt dem Compiler mehr Freiheit zu optimieren, wenn ihm danach ist.

    [Reply ]

RSSAll Articles
2008, 2007, 2006, 2005, 2004

What's Related

Documents

�bersetzerbau

Link Manager

�bersetzerbau
Programming

Article Manager

�bersetzerbau
Programming

FAQ

�bersetzerbau

Photo Albums

Programming

RSS News Feeds

Programming

Announcements

Programming

Web Pages

Programming

Latest Updates

AdministrativeTexts
updated by freddiemac1993, 2013-06-14
wiki

Re: adventures
created by brittdavis10, 2012-02-23 (1 rply, 3 views)
thread

Re: how to run phpwebsite...
created by alexander, 2011-08-25 (2 rpls, 3607 views)
thread

Re: Forum tags
created by HaroldFaragher, 2011-08-22 (3 rpls, 8488 views)
thread


Zu den KO2100 Foren