Español
Ensamblador Foro

Bereichsvariable y einfache Bereiche

 

if 0

     {$cleq}

endif

declarar bereich#, y&, z&
dim bereich#,16
imprimir
imprimir "Erster Test para Umgang con Bereichsvariablen# y einfachen Bereichen en XPIA"
imprimir " (In diesem Teil es ausschließlich en long&-Werte con 4 Byte = 32 bit)"
imprimir
z& = 1234567899
y& = 1212
imprimir "------ Profano-Teil ------"
imprimir "An Position 0 de bereich# se zugewiesen",z&
long bereich#,0 = z&
imprimir "An Position 4 de bereich# se zugewiesen",y&
long bereich#,4 = y&
imprimir "Probe: An Position 0 des Bereiches es tatsächlich", @long(bereich#,0)
imprimir "       An Position 4 des Bereiches es tatsächlich", @long(bereich#,4)
imprimir
imprimir "Die Variable ´bereich#´ zeigt el Wert",bereich#
set("decimals",0)
imprimir "Die Función Addr( bereich# ) liefert ebenfalls", Addr( bereich# )
imprimir "Addr( bereich# ) liefert also el Inhalt des Zeigers ´bereich#´"
imprimir "Aber worauf zeigt él?"
imprimir
imprimir "---- Assemblerteil ----"

AsmStart Alig1( bereich# )

    MOV EAX, para1

AsmEnd (z&)

Imprimir "Der Inhalt de ´bereich#´, es con MOV EAX eingelesen als", z&

AsmStart Alig3( bereich# )

    MOV EBX,para1
    LEA EAX, [EBX]

AsmEnd (z&)

Imprimir "Test: Para1 zeigt en Speicherstelle", z&

AsmStart Alig2( bereich# )

    LEA EAX, para1

AsmEnd (z&)

Imprimir "An Speicherstelle ´bereich#´ es una 32bit-Zeiger, el auf", z&,"zeigt."
imprimir "----------------------"
imprimir "Der 16-byte-alignment-Versatz des Bereichsbeginns es ", z& mod 16
imprimir "Ergebnis NULL es SEHR wichtig para schnelle SSE/SIMD-Algorithmen!"
imprimir "----------------------"

AsmStart Alig4( bereich# )

    LEA EBX, para1
    LEA EAX, [EBX]

AsmEnd (z&)

Imprimir "Probe: para1 verweist indirekt auf", z&

AsmStart Alig5( bereich# )

    MOV EBX, para1
    MOV EAX, [EBX]

AsmEnd (z&)

Imprimir "Und hay wiederum es = ", z&

AsmStart Alig6( bereich# )

    MOV EBX, para1
    MOV EAX, [EBX + 4]

AsmEnd (z&)

Imprimir "Und 4 Byte más es = ", z&
Imprimir "----- Mi Schlussfolgerung -----"
imprimir "´Der Inhalt de bereich#´ stellt Así que una interner Zeiger dar, en el "
imprimir "der Beginn des reservierten Speicherbereiches vermerkt es!"
imprimir
imprimir "Garantie gibts natürlich no! Aber dafür herzliche Grüße de Pájaro carpintero ;-)"
WaitInput
disponer bereich#
End

Editar de Jörg: Con el el código-Tags scheint echt schwer a ser! 
Stimmt, woher debería Principiante auch wissen, daß el # qué con Code a tun ha?
 
27.08.2008  
 



Hier ni Antwort, con direkter Eingabe el Adresse a Fuss
Kann se ändern, si zwischenzeitlich qué neues declariert o neu comenzó se.
Also Programa starten , Adresse merken ,inmediatamente einsetzen,otra vez starten y el Solución es como.
Der Offset wir a direkten Adresse zugerechnet.
Funktioniert como Poke y Peek, como en üblichen Basicprogrammen.
Also : bereich# beinhaltet el direkte Speicheradresse en el geschrieben voluntad kann.
El Adresse se soweit reserviert así gross como vorher el DIM war.
Ein einfaches y schnelles Verfahren.

mfg
peter
declarar bereich#
declarar adresse%
dim bereich#,16
byte bereich#,0 = 7
byte bereich#,1 = 8
imprimir Addr( bereich# )
imprimir byte(Addr( bereich# ),0)
imprimir byte(Addr( bereich# ),1)
imprimir byte(177857072,0)
imprimir byte(177857072+1,0)
waitkey
 
28.08.2008  
 



@Peter: Kompileranweisungen des XPSE musst No en un Blockanweisung ablegen - esta se XProfan sowieso no erreichen si XPSE vorgeschaltet es.

Si usted todavía el Anweisung beibehalten möchtest, sin XPSE a nutzen, entonces hay esta una undokumentierten Trick: Das Ausklammern de XPSE-Kompileranweisungen puede ser z.B. con el Remtyp y el Remtyp //, verwendest Usted sin embargo zweimal el Signo , also , Luego se el Schalter de XProfan (natürlich) dank Rem übersehen - aber XPSE krallt se el Schalter trotzdem. El Excepción gilt aber sólo para 2 x antes Anweisung.
 
28.08.2008  
 




Jörg
Sellmeyer
Si usted una Speicherbereich necesidad, el se a Laufzeit no ändert (außer por Su Programa), Usted necesita ihn simplemente sólo al Anfang des Programms deklarieren y todavía gewünschter Größe dimensionieren. Der Zona se solange reserviert, a él con Disponer Var# otra vez freigegeben se. Früher waren sólo solche no-dynamische Bereichsvariablen posible.
Ob el entonces en Windows tatsächlich a physikalisch aufeinanderfolgenden Adressen beschrieben voluntad, wage Yo a bezweifeln. Das dürfte vom Defragmentierungszustand des Rams abhängen.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
28.08.2008  
 




Jörg
Sellmeyer
IF
@Peter: Kompileranweisungen des XPSE musst No en un Blockanweisung ablegen - esta se XProfan sowieso no erreichen si XPSE vorgeschaltet es.

Si usted todavía el Anweisung beibehalten möchtest, sin XPSE a nutzen, entonces hay esta una undokumentierten Trick: Das Ausklammern de XPSE-Kompileranweisungen puede ser z.B. con el Remtyp y el Remtyp //, verwendest Usted sin embargo zweimal el Signo , also , Luego se el Schalter de XProfan (natürlich) dank Rem übersehen - aber XPSE krallt se el Schalter trotzdem. El Excepción gilt aber sólo para 2 x antes Anweisung.


Das hast No dokumentiert? Es el beste Feature überhaupt a XPSE! Schön, el auch veces a erfahren.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
28.08.2008  
 




Ob el entonces en Windows tatsächlich a physikalisch aufeinanderfolgenden Adressen beschrieben voluntad, wage Yo a bezweifeln.


Como bin Yo sicher. Sonst könnten nosotros sí el mühe sparen , solch kurze Befehle auszudenken.
Weil beim starten uno Programmes (hier Profano) dieser Raum sólo todavía para el una Programa Profano disponible es. Wenn du una 2. Profano startest y probehalber el gleiche Adresszahl eingibst, wirst du no en el Speicher zugreifen puede de Profano beim 1. Start, obwohl beim 2. Programa el Adresse auch disponible es, du bekommst una otro Valor.
Wenn dein Ram a el Punto defekt es wist du el Zahl no mehr encontrar.

Wenn uno el Programa.exe de Profano natürlich producido, con una Disassembler bearbeitet, wirst du lo determinar.

mf
peter
 
28.08.2008  
 




Jörg
Sellmeyer
Defekter Ram debería esta una untergeordnete Papel spielen. Angenommen Su Ram sieht así de:
Daten|Daten|Daten|Daten|Daten| |Daten| |Daten|Daten| |Daten| | | | | | | | |

Und Usted startest Su Programa, entonces glaube Yo no, daß el Speicher hiterher así aussieht:
Daten|Daten|Daten|Daten|Daten| |Daten| |Daten|Daten| |Daten|Profan|Profan|Profan|Profan|Profan| | | |

Sondern así:
Daten|Daten|Daten|Daten|Daten|Profan|Daten|Profan|Daten|Daten|Profan|Daten|Profan|Profan| | | | | | |
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
28.08.2008  
 



Jörg Sellmeyer
Ob el entonces en Windows tatsächlich a physikalisch aufeinanderfolgenden Adressen beschrieben voluntad, wage Yo a bezweifeln. Das dürfte vom Defragmentierungszustand des Rams abhängen.


El physikalische Adresse erhält uno eh nie, sólo una Zuordnungsadresse (welche oft fälschlich como phy Addr verkannt se) y esta ändert se - (aber) je después de Reservierungsmethode - normalerweise a a una möglichen Redimensionierung no.

Ge DIM ter Speicher behält also seine Adresse a él otra vez con Dim redimensioniert se oder gar freigegeben.
 
28.08.2008  
 



Peter Bierbachh
Weil beim starten uno Programmes (hier Profano) dieser Raum sólo todavía para el una Programa Profano disponible es.


Es de una otro Grund falso. Jeder Prozess ha como así seinen eigenen Adressbereich - reden wir hier aber veces sólo de NT. (y no de älteren Windowsversionen como z.B. 98 wo el Speichergeschehen no tan organisiert (sicher) war.)

Usted puede natürlich auch Speicher reservieren welcher para todos Prozesse verfügbar es - sólo una Cuestión de Art el Reservierung.

Dim reserviert unbeweglichen Speicher el para gewöhnlich sólo en el erzeugenden Prozess verfügbar es, y natürlich en übergeordneten Leveln z.B. si el propio Programa el UserMode verlässt. (como z.B. Treiber)
 
28.08.2008  
 



@Peter: Hast Usted Usted todavía una zweiten Account zugelegt? (con 2 h al Ende des Nachnamen?)
 
28.08.2008  
 



Lo son sólo el con el 2h. Das una h kriege Yo no weg.
Wollte Yo ya überberschreiben, entonces kam Yo no mehr dran.

mfg
 
28.08.2008  
 



Wer qué en el Computer macht, me está eigentlich wurscht.

Mit el Speichergedöns debería el selbsternannten Fachleute rumschlagen. es no mi Welt.
Und si Windows el Speicher de Aldi holt, Hauptsache det Programa se ejecuta.

mfg
peter
 
28.08.2008  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

16.716 Views

Untitledvor 0 min.
funkheld22.05.2016
Georg Teles09.01.2016
H.Brill16.11.2013
moefy04.09.2013
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie