kostenloser Webspace werbefrei: lima-city


Lineares Schieberegister

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    sw1tch

    Kostenloser Webspace von sw1tch, auf Homepage erstellen warten

    sw1tch hat kostenlosen Webspace.

    Jap, an meinem 32Bit Sys wirds wohl dann liegen. Wie schauts mit dem Einbinden von den Assembler-Befehlen bei C++ und den entsprechenden Fehlermeldungen aus?
    Achja, wieso hast du bei deinem C-, und ASM-Code das LFSR in 3 Teile eingeteilt?

    Edit:
    Ups, hab ich glatt übersehen. Ich gestehe ich hab das ganze nur schnell durch nen online-rechner gejagt :-D

    Beitrag zuletzt geändert: 18.8.2009 22:04:19 von sw1tch
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. c****s

    sw1tch schrieb:
    Jap, an meinem 32Bit Sys wirds wohl dann liegen. Wie schauts mit dem Einbinden von den Assembler-Befehlen bei C++ und den entsprechenden Fehlermeldungen aus?
    Achja, wieso hast du bei deinem C-, und ASM-Code das LFSR in 3 Teile eingeteilt?


    Ad1: Ich nehme mal stark an, dass der Fehler kommt, weil dein Proz im 32-bit Modus läuft und deshalb die R-Register gar nicht kennt. Installier dir mal ein 64-bit Betriebssystem.

    Ad2: Weil ich 160 bit schlecht in ein einziges 64 bit Register reinbekomme. Dafür brauch ich 3 Register: eins mit 32 gültigen Stellen, und zwei mit 64 gültigen Stellen. 32 + 2 * 64 = 160.

    EDIT:
    Ad3: Wenn du unbedingt im 32-bit Mode arbeiten musst, dann musst du eben ein LFSR jeweils in 5 Register reinschieben, aber dann gehen dir schnell die Register aus: EAX als Rückgaberegister, EDI und ESI zum zählen vom Buffer und Zähler, da bleiben als general-purpose nur EBX, ECX und EDX übrig und 3 < 5.

    Beitrag zuletzt geändert: 18.8.2009 22:06:29 von census
  4. Autor dieses Themas

    sw1tch

    Kostenloser Webspace von sw1tch, auf Homepage erstellen warten

    sw1tch hat kostenlosen Webspace.

    Ich bin auch ein Genie, heute nachmittag war mir das klar und jetzt hatte ichs wieder vergessen, Schande über mich.
    Ich werde dann mal nen neuen Versuch starten das zu programmieren, wird wohl dann nicht so performant werden wie deine Assembly Version :-(
    Vielleicht kann ich das ja in etwa der Performance von der C-Version realisieren, da ich das Programm schon für 32Bit kompatibel haben wollte.

    MfG Switch.

    Edit:
    Deine Assembler-Version dementsprechend zu editieren trau ich mir erstmal nicht zu, da ich mich da auch noch gut reinarbeiten müsste ;)

    Beitrag zuletzt geändert: 18.8.2009 22:12:33 von sw1tch
  5. c****s

    Hmm, gerade für so eine Anwendung, die man am besten sehr hardwarenah umsetzt, ist es eigentlich eine Schande 90% der Prozessorleistung wegzuschmeißen, weil man ein 32-bit Betriebssystem benutzt. Niemand hat heute mehr einen 32-bit Prozessor, aber 90% haben noch ein 32-bit Betriebssystem. Das ist mir unverständlich.

    Linux 64-bit gibt es kostenlos in zig Varianten (ich persönlich hab ubuntu 9.04 auf kernel 2.6.28.15)
    Windows 7 64-bit gibt es kostenlos bei Microsoft.

    Was will man mehr. . .
  6. Autor dieses Themas

    sw1tch

    Kostenloser Webspace von sw1tch, auf Homepage erstellen warten

    sw1tch hat kostenlosen Webspace.

    Ich hab auch schon drüber nachgedacht, doch die meisten Programme sind nunmal nicht auf 64Bit optimiert und unter Umständen kommt es sogar zu einer schlechteren Performance (wie Tests zeigen). Deswegen warte ich noch ein wenig... ;-)

    Windows 7 64-bit gibt es kostenlos bei Microsoft.

    Hab ich was verpasst?
    Das gibt es kostenlos, aber nicht bei M$ :wink:

    MfG Switch.

    Beitrag zuletzt geändert: 18.8.2009 22:42:27 von sw1tch
  7. c****s

    sw1tch schrieb:
    Ich hab auch schon drüber nachgedacht, doch die meisten Programme sind nunmal nicht auf 64Bit optimiert und unter Umständen kommt es sogar zu einer schlechteren Performance (wie Tests zeigen). Deswegen warte ich noch ein wenig... ;-)

    Windows 7 64-bit gibt es kostenlos bei Microsoft.

    Hab ich was verpasst?
    Das gibt es kostenlos, aber nicht bei M$ :wink:

    MfG Switch.


    http://www.microsoft.com/germany/windows/windows-7/beta-download.aspx

    Kannst dir ja zwei OS auf einer Maschine installieren, ein 32 bit und ein 64 bit. Oder du installierst dir nativ Windows 7 und in eine VM dein altes 32-bit System.

    ==============================================
    EDIT:
    Falls ich morgen Lust und Laune habe, schreib ich das ganze mal für 32-bit. Was willst du denn? Intel oder AMD?

    Beitrag zuletzt geändert: 18.8.2009 22:58:01 von census
  8. census schrieb:
    http://www.microsoft.com/germany/windows/windows-7/beta-download.aspx

    Kannst dir ja zwei OS auf einer Maschine installieren, ein 32 bit und ein 64 bit. Oder du installierst dir nativ Windows 7 und in eine VM dein altes 32-bit System.

    ==============================================
    EDIT:
    Falls ich morgen Lust und Laune habe, schreib ich das ganze mal für 32-bit. Was willst du denn? Intel oder AMD?


    Der Download der Beta-Version von Windows 7 ist leider nicht mehr möglich. Anwender, die im Besitz von Windows 7 Beta sind (z. B. über verteilte Presse-DVDs) und bisher noch keinen Product-Key erhalten haben können sich weiterhin über die unten aufgeführten Auswahlmöglichkeiten für einen Product-Key 32-Bit oder 64-Bit registrieren.
  9. c****s

    nikic schrieb:
    census schrieb:
    http://www.microsoft.com/germany/windows/windows-7/beta-download.aspx

    Kannst dir ja zwei OS auf einer Maschine installieren, ein 32 bit und ein 64 bit. Oder du installierst dir nativ Windows 7 und in eine VM dein altes 32-bit System.

    ==============================================
    EDIT:
    Falls ich morgen Lust und Laune habe, schreib ich das ganze mal für 32-bit. Was willst du denn? Intel oder AMD?


    Der Download der Beta-Version von Windows 7 ist leider nicht mehr möglich. Anwender, die im Besitz von Windows 7 Beta sind (z. B. über verteilte Presse-DVDs) und bisher noch keinen Product-Key erhalten haben können sich weiterhin über die unten aufgeführten Auswahlmöglichkeiten für einen Product-Key 32-Bit oder 64-Bit registrieren.



    Ja, sorry, war der falsche Link: Hier ist der richtige:

    http://www.microsoft.com/germany/windows/windows-7/download.aspx
  10. Autor dieses Themas

    sw1tch

    Kostenloser Webspace von sw1tch, auf Homepage erstellen warten

    sw1tch hat kostenlosen Webspace.

    Okay, ich dachte Vollversion. Habe eh schon Seven 32Bit ;-).
    Wenn du Lust und Laune hättest würde ich mich sehr freuen! :-D
    Ich habe allerdings auch schon einen Ansatz um 64Bit-Ints zu verwenden:
    void LFSR(string Hash) {
    	stringstream ss;
    	unsigned __int64 LFSR1_L = 0;
    	unsigned __int64 LFSR1_C = 0;
    	unsigned __int64 LFSR1_R = 0;
    	ss << hex << Hash.substr(0,16);
    	cout << ss.str() << endl;
    	ss >> LFSR1_L;
    	ss.str("");
    	ss.clear();
    	ss << hex << Hash.substr(16,32);
    	cout << ss.str() << endl;
    	ss >> LFSR1_C;
    	cout << LFSR1_C << endl;
    	printf ("Terminated in %d ms.\n",(int)(clock()/(CLOCKS_PER_SEC/1000)));

    Habe nur die ersten beiden Teile gemacht, dass funzt aber soweit bestens. Am Besten wäre es, wenn du probierst den ASM-Code unter 32Bit lauffähig zu bekommen :-)

    Edit:
    Jetzt hab ich doch glatt vergessen auf die Frage zu antworten: Intel

    Beitrag zuletzt geändert: 18.8.2009 23:11:30 von sw1tch
  11. c****s

    Voilà 32-bit Version mit 3 Registern:
    LFSR schiebt immer,
    LFSR_1 nur, falls LFSR 1 liefert,
    LFSR_2 nur, falls LFSR 0 liefert.

    mov  esi,buffer
    mov  edi,length
    dec  edi
    
    start:
    
    mov  ebx,right
    shr  ebx,1
    jc   eins
    jmp  zwei
    done:
    mov  ebx,right
    mov  edx,right
    shr  ebx,1
    mov  ecx,ebx
    xor  edx,ebx
    shr  ebx,17
    xor  edx,ebx
    shr  ebx,1
    xor  edx,ebx
    
    mov  ebx,halfright
    shl  ebx,31
    or   ecx,ebx
    mov  right,ecx
    
    mov  ecx,halfright
    shr  ecx,1
    mov  ebx,center
    shl  ebx,31
    or   ecx,ebx
    mov  halfright,ecx
    
    mov  ecx,center
    shr  ecx,1
    mov  ebx,halfleft
    shl  ebx,31
    or   ecx,ebx
    mov  center,ecx
    
    mov  ecx,halfleft
    shr  ecx,1
    mov  ebx,left
    shl  ebx,31
    or   ecx,ebx
    mov  halfleft,ecx
    
    mov  ecx,left
    shr  ecx,1
    shl  edx,31
    or   ecx,edx
    mov  left,ecx
    
    dec  edi
    jnz  start
    jmp  end
    
    eins:
    mov  ebx,right_1
    mov  edx,right_1
    shr  ebx,1
    setc al
    mov  byte ptr [esi],al
    inc  esi
    mov  ecx,ebx
    xor  edx,ebx
    shr  ebx,17
    xor  edx,ebx
    shr  ebx,1
    xor  edx,ebx
    
    mov  ebx,halfright_1
    shl  ebx,31
    or   ecx,ebx
    mov  right_1,ecx
    
    mov  ecx,halfright_1
    shr  ecx,1
    mov  ebx,center_1
    shl  ebx,31
    or   ecx,ebx
    mov  halfright_1,ecx
    
    mov  ecx,center_1
    shr  ecx,1
    mov  ebx,halfleft_1
    shl  ebx,31
    or   ecx,ebx
    mov  center_1,ecx
    
    mov  ecx,halfleft_1
    shr  ecx,1
    mov  ebx,left_1
    shl  ebx,31
    or   ecx,ebx
    mov  halfleft_1,ecx
    
    mov  ecx,left_1
    shr  ecx,1
    shl  edx,31
    or   ecx,edx
    mov  left_1,ecx
    jmp  done
    
    zwei:
    mov  ebx,right_2
    mov  edx,right_2
    shr  ebx,1
    setc al
    mov  byte ptr [esi],al
    inc  esi
    mov  ecx,ebx
    xor  edx,ebx
    shr  ebx,17
    xor  edx,ebx
    shr  ebx,1
    xor  edx,ebx
    
    mov  ebx,halfright_2
    shl  ebx,31
    or   ecx,ebx
    mov  right_2,ecx
    
    mov  ecx,halfright_2
    shr  ecx,1
    mov  ebx,center_2
    shl  ebx,31
    or   ecx,ebx
    mov  halfright_2,ecx
    
    mov  ecx,center_2
    shr  ecx,1
    mov  ebx,halfleft_2
    shl  ebx,31
    or   ecx,ebx
    mov  center_2,ecx
    
    mov  ecx,halfleft_2
    shr  ecx,1
    mov  ebx,left_2
    shl  ebx,31
    or   ecx,ebx
    mov  halfleft_2,ecx
    
    mov  ecx,left_2
    shr  ecx,1
    shl  edx,31
    or   ecx,edx
    mov  left_2,ecx
    jmp  done
    
    end:


    Beitrag zuletzt geändert: 19.8.2009 20:23:09 von census
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!