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
 
LucasL

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

Re: Elemente in Mengen mit ASM zählen

  Alt 17. Nov 2006, 14:22
Mit SizeOf klappts. Habs jetzt mal wie folgt gemacht und es scheint zu funktionieren, egal wieviel Platz die Menge benötigt (1 - 32 Byte).

Delphi-Quellcode:
function MySizeOf(var Menge: TMySet): Byte;
  function CountBits(C: Byte; P: Pointer): Byte;
  asm
    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
        JNC @nocarry
        ADD EAX, 1 // CF gesetzt? Dann EAX inkrementieren
        @nocarry:
        DEC CH
        JNZ @loop2
      ADD EDX, 1 // nächstes Bit adressieren
      DEC CL
      JNZ @loop1
  end;
begin
  MySizeOf := CountBits(SizeOf(Menge), @Menge);
end;
Gruß,
Lucas
  Mit Zitat antworten Zitat
 


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 22:25 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