Füllung von Banks
Übersicht

![]() |
mpmxyzBetreff: Füllung von Banks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei der Arbeit mit meinem Precompiler ist mir etwas aufgefallen:
Code: [AUSKLAPPEN] Local Bank=CreateBank(10)
ResizeBank Bank,101 Local Offset For Offset=0 To 100 Print PeekByte(Bank,Offset) Delay 100 Next WaitKey End Schaut euch mal die Ausgabe an! Während die ersten 10 Werte immer 0 sind, sind die anderen, die durch das "Resizebank" hinzugefügt wurden, zufällig mit Werten aus dem Nirwana gesetzt worden. Bei Exen ist das noch schlimmer. Ist das bei euch auch so? Wenn ja, dann ist das eine Sache, die man sich merken sollte! Ein Hinweis in der BB-Hilfe wäre auch nicht schlecht. mfG mpmxyz P.S.: Die Codeoptimierungen in meinem Precompiler kann ich daher jetzt entfernen. ![]() |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
n-Halbleiter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also bei mir ist es auch so, es könnte eventuell daher kommen, dass bei CreateBank der Speicher für die Bank freigeräumt wird, und bei ResizeBank nicht. Und da ja der Arbeitsspeicher viel genutzt wird, kann es so dann passieren, dass da noch Werte von irgendwoanders sind. Zumindest wäre das die einzige Erklärung die mir so spontan einfällt. | ||
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit Ploing! Blog "Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935) |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also bei mir steht alles auf Null. Vielleicht sollte ich mal mein Rechner ein paar Tage an lassen, bis entsprechende Speicherbereiche schonmal beschrieben waren.
Allerdings - wenn man sich den Sinn und die Funktionsweise von Banken mal ansieht - bin ich schon froh, dass überhaupt ein Befehl wie ResizeBank existiert. Denn dieser ist nicht unbedingt als selbstverständlich anzusehen. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bin da auch drüber froh, aber ich war bei meinen Optimierungen davon ausgegangen, dass es wie bei "CreateBank()" auf 0 gesetzt ist.
Vielleicht ist dies aber auch nur Zufall. Ich vermute, dass du weniger Programme offen hattest und dein PC fast noch frisch gestartet war. Dann ist die Wahrscheinlichkeit, dass man etwas anderes außer 0 sieht, geringer. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei CreateBank wird der angeforderte Speicherbereich mit Nullen gefüllt, bei ResizeBank kann der vorher unbeschriebene Bereich zufällige Werte enthalten.
Musste ich auch feststellen, als bei aus Banks erstellten Bildern plötzlich Pixelfehler auftraten ![]() |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
hazumu-kun |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine interesante Sache bei Banks ist auch dass man bei folgenden Code...
Code: [AUSKLAPPEN] bank= CreateBank(32) Pokebyte bank,128,255 ...keinen Fehler angezeigt bekommt. Sondern dieses Prinzip sich bis zum Offset 4096 (4 Kilobyte) fortsetzen lässt. Scheint wohl am internen Speichermanagement von Windows XP zu liegen. |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die 4 kb haben nichts mit dem internen Speichermanagement von Windows zu tun, sondern kommen daher, dass ohne Debugger die Offsets von Bankzugriffen nicht überprüft werden.
Je nach Position des Speicherbereichs der Bank kommt es dann früher oder später zu einem MAV, weil man etwas wichtiges von BB überschreibt. Auf dieser Maschine beispielsweise kann ich bis zum Offset 9860 schreiben, bevor es abstürzt - kommt halt ganz drauf an, wie der Arbeitsspeicher gerade genutzt wird. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
ähhmm... leute, ich will euch nicht den spaß verderben, aber iwie in unreservierten rambereichen (die vllt sogar von anderen programmen benützt werden) heumschreiben is scho bissal blöd, oder?... stellts euch mal vor, ihr überschreibts iwas wichtiges gerade geöffnetes von windows. zb den ntfs-treiber... wär scho lustig, was dabei passieren könnte...
wilde pointer (und diese bankgeschichte zählt im grunde als wilder pointer) sollten auf jeden fall vermieden werden (im lesen is wurscht, im schreiben is gaaanz ganz böse) |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Man kann im Speicher anderer Programme weder lesen noch schreiben. Wenn man nicht reservierten Speicher verändern will, verursacht man damit höchstens einen Absturz des eigenen Programmes. | ||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
![]() |
hazumu-kun |
![]() Antworten mit Zitat ![]() |
---|---|---|
Windows schützt intern den Speicher anderer Programme vor fremden Zugriffen.
Deswegen werden die meisten Trainer-Programme für Spiele von Antivirern Software als Virus gemeldet. Weil sie eben diesen Schutz übergehen. |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group