Delphi içinde asm

Başlatan bunalmis, 29 Aralık 2009, 01:05:13

z

function Str_Oku(s:string):boolean;
begin
//          S stringinin karakterlerini asm ile tek tek okumak istiyorum

end;

Bu konuda yardımcı olabilirmisiniz?

Kendi soruma cevap buldum. S stringinin adresini bulmakta zorlanıyordum.

function Str_Oku(s:string):boolean;
begin
//          S stringinin karakterlerini asm ile tek tek okumak istiyorum
        asm
                lea   esi,S
                lodsd
                mov esi,eax
                lodsb    ; // 1.char
                lodsb    ; // 2.char
                lodsb    ; // 3.char
                lodsb    ; // 4.char
                .......
        end;
end;


Str sonu kontrolunu unutmayalım
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

function Str_Oku(s:string; var S1:string):boolean;
begin
// S stringinin karakterlerini asm ile tek tek S1 e taşımak istiyorum

end;

Nasıl olur?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Delphide Fonksiyonlara parametre aktarımı, registerlerin fonksiyon girişindeki değerleri, vs gibi bilgileri anlatan iyi bir site biliyormusunuz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Logan

Üstad işinize karışmak gibi olmasın fakat neden ASM ile yapmaya çalıştığınızı anlayamadım. İstediğiniz işlem şu şekilde de olabilir;

S1:=copy(s,1,lenght(s)-1)
İmza.

hasangurlek

Alıntı yapılan: "bunalmis"function Str_Oku(s:string; var S1:string):boolean;
begin
// S stringinin karakterlerini asm ile tek tek S1 e taşımak istiyorum

end;

Nasıl olur?

PC tarafında niçin asm kullanma ihtiyacı duyuyorsunuz ? Delphiyi iyi derecede bilmemekle birlikte;

Metin : String;
Point_er : Array of Byte Absolute Metin;


Bellekte zaten bir array olarak tutulan Metin değişkenine ait karakterlerin tutulduğu adreslere Absolute ataması ile Point_er değişkeninin eleman numarasını kullanarak kolayca ulaşıp istediğiniz şekilde kullanabilirsiniz.
http://www.cyber-warrior.org, Although they like whiteness, sometimes twilight is required...  Hala evlilermi bilinmez ama kesinlikle artık uygun değiller !!!

z

Alistirma yapmak acisindan sordum. ASM ile string icerigini okuyabiliyorum ama iceregini degistiremedim.

Delphinin kendi string komutlarinda yavaslamaya neden olan tonla kod var. O yuzden string islemlerini asm ile yapmaya karar vermistim. Yanliz pointer islemleri ile de hizlandi. Pointer islemleri, Asm ile yapilan kodlama kadar yalin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

wsxwsx

A set of string routines for manipulating large strings at high speed.



z

Alıntı yapılan: "Logan"Üstad işinize karışmak gibi olmasın fakat neden ASM ile yapmaya çalıştığınızı anlayamadım. İstediğiniz işlem şu şekilde de olabilir;

S1:=copy(s,1,lenght(s)-1)

Su an yazdigim kodlar surekli olarak dongu icinde string uzerinde islem yapiyor.

Her bir string isleme komutu toplamda inanilmaz sayida fazladan asm kod calistiriyor.

Bunlardan kurtulmak icin asm ile calismak istedim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

hocam delphi işinin piri "Marco Cantu'dur" onun sitesinden ve kitaplarından çaok şey öğrenebilirsiniz.