Macht dieses Programm was ich denke was es macht?



  • Ich habe ein Programm (Linux,gcc,Inlineassembler) geschrieben und jetzt weiß ich nicht, ob es das macht, was ich will.

    Es soll machen: An der Druckerschnittstelle liegt am ACK-Pin (Pin 10 der Schnittstelle, 7. Bit Offset 1) ein Signal mit einer Frequenz von 500 kHz an. Dieses soll so lange überprüft werden, bis dass 16 mal hintereinander das Signal 1 war. Mein Computer arbeitet mit 333 MHz und dtrate ist demzufolge 666.

    Und hier ist das Programm:
    asm(" rdtsc
    movl %%eax,%%ebx
    addl %2,%%ebx
    movl $0x0000,%%esi
    anfang:
    call nulllesen
    bt $0x04,%%esi
    jnc warnix
    jmp ende
    warnix:
    jmp anfang

    nulllesen:
    inb $0x0379,%%eax
    bt $0x06,%%eax
    jnc einsles
    addl $0x0001,%%esi
    jmp lesfertig
    einsles:
    movl $0x0000,%%esi
    lesfertig:
    call wartstart
    ret

    wartstart:
    rdtsc
    sub %%ebx, %%eax
    jae weiter
    jmp wartstart
    weiter:
    addl %2,%%ebx
    ret

    ende:"
    : "=a"(enderg),"=c"(y)
    : "g"(dtrate)
    : "%eax","%ebx","%ecx","%edx","%esi");

    Machts das, was ich geschrieben habe?



  • Ist mein Programm denn soooo kompliziert?



  • Original erstellt von James:
    Ist mein Programm denn soooo kompliziert?

    Vielleihct ists nicht das Programm, nur mit der gcc-Syntax kann ich persönlich überhuapt nichts anfangen, vielelicht ast das Ding ja auch mal in Intel-Syntax ohne gcc 😉

    [ Dieser Beitrag wurde am 30.08.2002 um 11:10 Uhr von TriPhoenix editiert. ]



  • Sorry, ich bin leider auch nicht (so) vertraut mit der AT&T Syntax.
    Müssten da nicht zumindest INTs nach 80h gehen, um die Schnittstelle abzufragen? Da Linux im PMode läuft wirst du wohl nicht die Berechtigung haben direkt darauf zugreifen zu können (es sei denn du schreibst ein Kernelmodul).
    Und wie machst du das Timing? Du weist ja, dass du dich nicht auf die Ausführzeit eines Befehls verlassen darfst, die du einfach so ausgerechnet hast (Cache(miss);...).

    mfg
    -bg-


Anmelden zum Antworten