AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Elemente in Mengen mit ASM zählen

Ein Thema von LucasL · begonnen am 16. Nov 2006 · letzter Beitrag vom 17. Nov 2006
Antwort Antwort
LucasL

Registriert seit: 20. Dez 2005
19 Beiträge
 
#1

Re: Elemente in Mengen mit ASM zählen

  Alt 17. Nov 2006, 21:03
Thx, und man sollte die Register, welche nicht sowieso von der Funktion als Parameter belegt werden, vorher noch mit Push bzw. am Ende mit Pop retten... So:

Delphi-Quellcode:
function Length(Menge: TMySet): Byte; overload;
    function CountBits(C: Byte; P: Pointer): Byte;
    asm
     PUSH EBX
     PUSH ECX
     MOV CL, AL // Byteanzahl nach CL
      MOV EAX, 0 // Bitzähler EAX initialisieren
      @loop1:
        MOV EBX, [EDX] // Bits nach EBX laden
        MOV CH, 8 // Bitanzahl nach CH
        @loop2:
          ROR EBX, 1 // Niedrigstes Bit von EBX nach CF schieben
          ADC EAX, 0 // CF zu EAX addieren
          DEC CH
          JNZ @loop2
        ADD EDX, 1 // nächstes Bit adressieren
        DEC CL
        JNZ @loop1
      POP ECX
      POP EBX
    end;
  begin
    Result := CountBits(SizeOf(Menge), @Menge);
  end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz