Français
Forum

Bekomme falsches Ergebnis chez XPSE dans qui Boucle.

 

funkheld
allô, guten journée, j'ai un Problem.
pourquoi venez unten cela Ergenis 6 raus?
si je qui Whilelloop rausnehme venez richtig 9 raus.

merci.
Gruss
 
18.04.2012  
 



Du musst en sortir, dass Windows-APIs aussi XPSE-Funktionen
aussi Kontrollstrukturen qui ASM-Registerwerte changement weil vous avec ihnen travailler.

voudrais on avec cette Werten travailler ensuite sollte on vous z.B. avec push et pop
sichern/ wiederherstellen. chez manchen APIs ist ca sogar explizit notwenwie z.B.
chez LineDDA ou bien manch anderen ENUM-Procs.

Würdest Votre Boucle alors pour cmp bzw. test et jmp bzw. jle ou bien jl ajuster -
alors sans Tandis que, ensuite würden aussi qui Registerwerte pas beeinflusst ou bien nutze
plan push et pop.

Incidemment... je pour dem quoi einem liegt...

tu peux naturellement:
nproc Addi(long x,y){ ... }


écrivons mais genauso aussi:

cela gilt pour procs comment pour nprocs.
 
18.04.2012  
 




funkheld
Hmm.., avec push et pop ändert sich cela Ergebnis pas.

Gruss
 
18.04.2012  
 



cela WhileLoop et Wend utilise ebenso mindestens eax et ebx,

si ensuite müsstest dein add eax,ebx abkapseln mais tu peux wiederum
aussi pas en sortir dass cela tandis que den ebx Wert inchangé dans qui Boucle
durchlässt.

dans diesem le cas eignet sich cela Mischen avec ASM pas. cela wiederum ist wohl chez allen
"ehrlichen" nativen Programmiersprachen qui le cas et plan aussi so chez Windows-APIs
um un plus à Geschwindigkeit trop erreichen bzw. um pas unnötig Registerwerte trop sichern.

Du könntest mais Votre Boucle (alors cela tandis que Wend) aussi komplett pour asm
umsetzen (comment dessus geschrieben) avec cmp bzw. test(-asm)-Anweisungen.

si tu écris quoi oui c'est ca Du erreichen vouloir ensuite peux je Dir den
ASM en supplément aussi aufschreiben.
 
18.04.2012  
 



encore un kleiner TIP:
peux Du komplett laisser tomber là qui Rückgabewert
qui dans EAX abgelegte Wert ist. So aussi chez Windows-APIs.
 
18.04.2012  
 




funkheld
Jup, merci.
eax habe je rausgelassen, maintenant funktioniert es.

mais cet funktioniert pas avec qui typischen MASM ou bien JWASM-SChleife:

qui XPIA kennt cet typische Boucle wieder.

Gruss
 
18.04.2012  
 




funkheld

cmp bzw. test et jmp bzw. jle ou bien jl


si du la fois s'il te plaît une ASM-Demo faire könntest pour XPSE, welches une si-Boucle, une Whileloop-Boucle et une Tandis que-Boucle darstellt, avec cela pourrait je ensuite viel avec anfangen.

merci.

Gruss
 
18.04.2012  
 



demain,

comment ici (  [...]  ) bereits geschrieben peux Du si, tandis que, whileloop simple direct verwenden
sans qui deutlich schmächtigere High-Level-Syntax (HLS) de jwasm.

un paire plakativ-gestaltete ASM-Beispiele pour si, tandis que et Zählschleife sans HLS
könnten so air:
et gibt aus:

0
1
1
0
10

wobei plan ca ici oui selbes Ergebis liefert:
 {$cleq}

nProc test.ifgleich

    parameters v&,w&

    si v&=w&

        return 1

    d'autre

        return 0

    endif

endproc

nProc test.ifkleiner

    parameters v&,w&

    si v&<w&

        return 1

    d'autre

        return 0

    endif

endproc

nProc test.whileZaehle

    parameters v&

    whileloop v&

        'schleifenkörper

    Wend

    sub eax,1'<-- pas important, seulement kosmetisch avec cela 10 zurück gegeben wird

endproc

cls
imprimer test.ifgleich(9,10)
imprimer test.ifgleich(10,10)
imprimer test.ifkleiner(9,10)
imprimer test.ifkleiner(10,10)
imprimer test.whileZaehle(10)
waitInput
end

et ca ici une optimiertere variante en ist:
 {$cleq}

nProc test.ifgleich

    parameters v&,w&
    cas v&=w& : return 1
    return 0

endproc

nProc test.ifkleiner

    parameters v&,w&
    cas v&<w& : return 1
    return 0

endproc

nProc test.whileZaehle

    parameters v&

    whileloop v&

        'schleifenkörper

    Wend

    sub eax,1'<-- pas important, seulement kosmetisch avec cela 10 zurück gegeben wird

endproc

cls
imprimer test.ifgleich(9,10)
imprimer test.ifgleich(10,10)
imprimer test.ifkleiner(9,10)
imprimer test.ifkleiner(10,10)
imprimer test.whileZaehle(10)
waitInput
end

et es encore kürzer allez:
 {$cleq}

nProc test.ifgleich

    parameters v&,w&
    return v&=w&

endproc

nProc test.ifkleiner

    parameters v&,w&
    return v&<w&

endproc

nProc test.whileZaehle

    parameters v&

    whileloop v&

        'schleifenkörper

    Wend

    sub eax,1'<-- pas important, seulement kosmetisch avec cela 10 zurück gegeben wird

endproc

cls
imprimer test.ifgleich(9,10)
imprimer test.ifgleich(10,10)
imprimer test.ifkleiner(9,10)
imprimer test.ifkleiner(10,10)
imprimer test.whileZaehle(10)
waitInput
end

et es aussi encore "cooler" allez:
 {$cleq}

nProc test.ifgleich(long v,w){ return v&==w& }

nProc test.ifkleiner(long v,w){ return v&<w& }

nProc test.whileZaehle(long v){

    whileloop v {

        'schleifenkörper

    }

    sub eax,1'<-- pas important, seulement kosmetisch avec cela 10 zurück gegeben wird

}

cls
imprimer test.ifgleich(9,10)
imprimer test.ifgleich(10,10)
imprimer test.ifkleiner(9,10)
imprimer test.ifkleiner(10,10)
imprimer test.whileZaehle(10)
waitInput
end

Hoffe hilft.
 
19.04.2012  
 




funkheld
oui merci, cela sieht oui bien aus.
ce sont belle Beispiele, qui je bien anwenden peux.

merci.

Gruss
 
19.04.2012  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

11.717 Views

Untitledvor 0 min.
funkheld29.07.2017
iF28.11.2014
mein02.06.2013
Andreas Koch14.01.2013
plus...

Themeninformationen

cet Thema hat 2 participant:

funkheld (5x)
iF (4x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie