<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>BlitzBasic Portal Worklogs - MaxLibs</title>
		<link>https://www.blitzforum.de/worklogs/439/</link>
		<description>Worklog von Lord Stweccys</description>
		<language>de</language>
		<managingEditor>mail@blitzforum.de</managingEditor>
		<webMaster>mail@blitzforum.de</webMaster>
		<pubDate>Thu, 03 Feb 2011 18:10:45 +0100</pubDate>
		<lastBuildDate>Thu, 03 Feb 2011 18:10:45 +0100</lastBuildDate>

		<item>
			<title>Opcode &quot;E8&quot;</title>
			<link>https://www.blitzforum.de/worklogs/439/#3167</link>
			<guid>https://www.blitzforum.de/worklogs/439/#3167</guid>
			<author>Lord Stweccys</author>
			<description>Erfreuliche Eilmeldung!&lt;br /&gt;&lt;br /&gt;Nach frustrierten Stunden habe ich es nun geschafft ganz alleine durch BlitzMax&lt;br /&gt;einen OpCode zu generieren, der den CALL NEAR PTR herstellt.&lt;br /&gt;Zuerst steht nat&amp;uuml;rlich das Erkennungszeichen &amp;quot;E8&amp;quot; (232) da und danach kommt eine 32 signed Int- Zahl,&lt;br /&gt;die zeigt, wie relativ die Position der Funktion zur jetzigen steht.&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Int(Byte Ptr(MilliSecs))-4-Int(maxlib.mem)-pos[/syntax]&lt;br /&gt;&lt;br /&gt;(Das -4 ist vermutlich f&amp;uuml;r die Kompensierung des stehenden Opcodes zust&amp;auml;ndig, genau&lt;br /&gt;wei&amp;szlig; ich das nicht, bin auf die Zahl durch Berechnungen gesto&amp;szlig;en)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Zugegeben. Das war nicht sooo schwer.&lt;br /&gt;&lt;br /&gt;Ich habe mir eine stinknormale Funktion gebaut, die Millisecs aufruft und mir an geschaut, nach&lt;br /&gt;welchem Muster die sInt-Zahl hinter E8 jeweils aufgebaut ist und das kann ich jetzt auch.&lt;br /&gt;&lt;br /&gt;D.h. man muss nicht mehr den Umweg &amp;uuml;ber das EAX-Register gehen, sondern die normalen CALLs&lt;br /&gt;werden von MaxLibs in Echtzeit durch die NEAR PTR CALLs ausgetauscht.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Noch sind externe Funktionen allerdings nicht abgeschlossen, ich habe bis jetzt nur MilliSecs&lt;br /&gt;eingebaut, ich denke ich werde alle normalen BlitzMax-Funktionen einbauen (BRL.Blitz) und den Code&lt;br /&gt;noch etwas verbessern.&lt;br /&gt;&lt;br /&gt;Mfg,&lt;br /&gt;LordSt</description>
			<pubDate>Thu, 03 Feb 2011 18:10:45 +0100</pubDate>
		</item>

		<item>
			<title>Extern über Umwege</title>
			<link>https://www.blitzforum.de/worklogs/439/#3166</link>
			<guid>https://www.blitzforum.de/worklogs/439/#3166</guid>
			<author>Lord Stweccys</author>
			<description>Tja, so ist das wohl:&lt;br /&gt;&lt;br /&gt;Ich bin im Moment krank und mir ist langweilig...&lt;br /&gt;&lt;br /&gt;Nach vielem Hin und Her habe ich es jetzt endlich geschafft die externe Funktion &amp;quot;MilliSecs()&amp;quot; von einer MaxLib aufrufen zu lassen und das war Schwerstarbeit  &lt;img src=&quot;/forum/images/smiles/icon_eek.gif&quot; alt=&quot;Shocked&quot; /&gt; !&lt;br /&gt;&lt;br /&gt;F&amp;uuml;r diese Kleinigkeit habe ich exakt 2 Wochen gebraucht und arbeite jeden Tag an MaxLibs!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...und ein endg&amp;uuml;ltiger Erfolg ist das immernoch nicht: Bisher geht das ganze noch nicht &amp;uuml;ber&lt;br /&gt;den direkten Weg:&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Millisecs()[/syntax]&lt;br /&gt;&lt;br /&gt;Das geht noch nicht. Stattdessen...&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]local a:int()=byte ptr(Millisecs)&lt;br /&gt;a()[/syntax]&lt;br /&gt;&lt;br /&gt;(So kann man generell jede Funktion aufrufen, es ist nur etwas d&amp;auml;mlich  &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt; )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Warum muss ich das machen? Weil mir jetzt etwas, was ich mal toll fand zum Verh&amp;auml;ngnis wird:&lt;br /&gt;&lt;br /&gt;Das CALL, das f&amp;uuml;r den Aufruf einer externen Funktion verwendet wird ist das &lt;b&gt;CALL NEAR PTR&lt;/b&gt;.&lt;br /&gt;Jetzt habe ich nat&amp;uuml;rlich versucht, dass mein Programm CALL findet und durch dieses spezielle CALL&lt;br /&gt;ersetzt, aber nein, aber nein. Ich schreibe es ausdr&amp;uuml;cklich hin und FASM macht wieder ein CALL SHORT&lt;br /&gt;draus. Nichts zu machen...&lt;br /&gt;...Vorerst!&lt;br /&gt;&lt;br /&gt;Mfg,&lt;br /&gt;LordSt</description>
			<pubDate>Wed, 02 Feb 2011 16:50:45 +0100</pubDate>
		</item>

		<item>
			<title>section data</title>
			<link>https://www.blitzforum.de/worklogs/439/#3141</link>
			<guid>https://www.blitzforum.de/worklogs/439/#3141</guid>
			<author>Lord Stweccys</author>
			<description>Halli hallo.&lt;br /&gt;&lt;br /&gt;Eigentlich wollte ich schon fr&amp;uuml;her hier weiterschreiben, aber solche assemblernahen Geschichten sind immer&lt;br /&gt;wieder fehleranf&amp;auml;llig, was die Produktion zur&amp;uuml;ckwirft &lt;img src=&quot;/forum/images/smiles/icon_sad.gif&quot; alt=&quot;Sad&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Bis jetzt&lt;/u&gt; konnten ja noch &lt;u&gt;keine Variablen&lt;/u&gt; verwendet werden (f&amp;uuml;r &lt;u&gt;lokale Funktionsvariablen&lt;/u&gt; werden von BMX&lt;br /&gt;die &lt;u&gt;Register&lt;/u&gt; verwendet), die &amp;quot;data&amp;quot; Sektion blieb also bei mir leer...&lt;br /&gt;...bis letztens!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Kurze Zusammenfassung f&amp;uuml;r &amp;quot;Kurzleser&amp;quot;&lt;/u&gt;:&lt;br /&gt;&lt;br /&gt;-Globals in Funktionen nun m&amp;ouml;glich&lt;br /&gt;-TMaxLib extends TStream&lt;br /&gt;-Footer&lt;br /&gt;-Suche dringend Tester! (PN an mich)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Jaja, letztens wurde die Sektion &amp;quot;data&amp;quot; eingef&amp;uuml;hrt, allerdings mit einer kleinen &amp;Auml;nderung:&lt;br /&gt;Jeder Vorkommen von '&lt;u&gt;align&lt;/u&gt;' wird &lt;u&gt;entfernt&lt;/u&gt;. Wieso? &lt;u&gt;Align sorgt daf&amp;uuml;r, dass&lt;/u&gt; auf die Data-Sektion schneller&lt;br /&gt;zugegriffen werden kann. Wie es das macht, ist jetzt nicht wichtig, allerdings wird dadurch der Code&lt;br /&gt;entscheidend ver&amp;auml;ndert und &lt;u&gt;meine Algos streiken&lt;/u&gt; &lt;img src=&quot;/forum/images/smiles/icon_sad.gif&quot; alt=&quot;Sad&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Die Struktur meiner MaxLib wurde ver&amp;auml;ndert und zwar steht direkt nach der MagicNumber &amp;quot;BLIB&amp;quot; die Adresse&lt;br /&gt;auf einen &lt;u&gt;Footer&lt;/u&gt;. Dieser Footer wiederum ist der Anfang einer &lt;u&gt;Liste&lt;/u&gt;, welche alle &lt;u&gt;Adressen&lt;/u&gt; auflistet, die&lt;br /&gt;v&lt;u&gt;or dem Ausf&amp;uuml;hren angepasst&lt;/u&gt; werden m&amp;uuml;ssen. Wieso das ganze? Nun ja: Z.b Globals (in Funktionen)&lt;br /&gt;werden wie &amp;quot;echte&amp;quot; Variablen (okay, der Begriff 'Variable' ist in Assembler nicht grade gut, ach was solls) behandelt.&lt;br /&gt;&lt;i&gt;Was war denn mit If und so?, das ging doch auch&lt;/i&gt;! Stimmt. F&amp;uuml;r If-Abfragen werden auch Labels verwendet,&lt;br /&gt;allerdings werden diese relativ gespeichert  und 'MOV eax,variable' wird eben absolut gesepichert.&lt;br /&gt;Mein selbst entwickelter &lt;u&gt;Algo&lt;/u&gt; *stolz* &lt;u&gt;sp&amp;uuml;rt&lt;/u&gt;e genau diese &lt;u&gt;absolute&lt;/u&gt;n &lt;u&gt;Labels auf&lt;/u&gt; und listet ihr vorkommen&lt;br /&gt;ab dem Footer in die MaxLib. Jetzt wird einfach an jede Adresse die Startadresse der MaxLib addiert und&lt;br /&gt;es kommt zu keinen Komplikationen mehr.&lt;br /&gt;&lt;br /&gt;So sieht das Format jetzt aus: (Die [] stehen NICHT f&amp;uuml;r Pointer)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('0')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('0')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox0&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('0');&quot;&gt;db &amp;quot;BLIB&amp;quot;&lt;br /&gt;dd 0 ;Platzhalter f&amp;uuml;r Footer&lt;br /&gt;&lt;br /&gt;db &amp;#91;AnzahlDerFunktionen-1&amp;#93;&lt;br /&gt;&lt;br /&gt;db &amp;#91;Funktionsnamenl&amp;auml;nge&amp;#93;&lt;br /&gt;dd &amp;#91;Funktionsname&amp;#93;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&amp;#91;Funktionscode&amp;#93;&lt;br /&gt;&lt;br /&gt;section &amp;quot;data&amp;quot;&lt;br /&gt;&lt;br /&gt;&amp;#91;Datacode&amp;#93;&lt;br /&gt;&lt;br /&gt;&amp;#91;Footer&amp;#93;&lt;br /&gt;&amp;#91;Liste aller zu &amp;auml;ndernden Adressen&amp;#93;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Um die &amp;Auml;nderung der Adressen zu verwirklichen muss nat&amp;uuml;rlich in den Code geschrieben werde&lt;br /&gt;und was eignet sich da besser als ein &lt;u&gt;TStream&lt;/u&gt;?&lt;br /&gt;(Alle Ans&amp;auml;tze ohne TStream haben nicht funktioniert, danke BRL f&amp;uuml;r diesen Type &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Tmaxlib&lt;/u&gt; wird neuerdings &lt;u&gt;extendiert von TStream&lt;/u&gt;, dadurch ist ein besserer Zugriff m&amp;ouml;glich.&lt;br /&gt;F&amp;uuml;r den Verwender dieser Bibliothek bringt das alleridings herzlich wenig. &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt;&lt;br /&gt;&lt;br /&gt;So das wars eigentlich auch schon.&lt;br /&gt;&lt;br /&gt;Ach! Beinahe h&amp;auml;tte ichs vergessen: Ich &lt;u&gt;&lt;b&gt;suche dringend Tester&lt;/b&gt;&lt;/u&gt; f&amp;uuml;r mein Projekt, denn ich muss&lt;br /&gt;ja wissen ob das alles praktisch auch auf verschiedenen System l&amp;auml;uft. Einfach &lt;u&gt;&lt;b&gt;PN an mich,&lt;/b&gt;&lt;/u&gt; falls Interesse&lt;br /&gt;besteht ;D</description>
			<pubDate>Wed, 19 Jan 2011 13:22:44 +0100</pubDate>
		</item>

		<item>
			<title>bmx2lib</title>
			<link>https://www.blitzforum.de/worklogs/439/#3120</link>
			<guid>https://www.blitzforum.de/worklogs/439/#3120</guid>
			<author>Lord Stweccys</author>
			<description>Mit einem fr&amp;ouml;hlichen &amp;quot;Moin moin&amp;quot; begr&amp;uuml;&amp;szlig;e ich euch heute zu meinem zweiten Eintrag.&lt;br /&gt;&lt;br /&gt;-&lt;i&gt;Warum hast du gestern nichts geschrieben?&lt;/i&gt;&lt;br /&gt;-Tja, gestern war &lt;b&gt;Ferienende in Bayern&lt;/b&gt; (argh!) und au&amp;szlig;erdem habe ich an einer &lt;b&gt;essentiellen Sache&lt;/b&gt;&lt;br /&gt; f&amp;uuml;r mein Projekt gearbeitet, die etwas l&amp;auml;nger gedauert hat und die ich euch nat&amp;uuml;rlich heute vorstelle  &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; &lt;br /&gt;&lt;br /&gt;Also was hat sich denn jetzt getan?&lt;br /&gt;&lt;br /&gt;Nun, an der eigentlichen Interpretation hat sich noch nichts ge&amp;auml;ndert, die externen Symbole, die man z.B.&lt;br /&gt;f&amp;uuml;r Arrays brauchen wird, da Arrays (man glaubt es nicht) nichts natives sind, sondern BlitzMax da seinen&lt;br /&gt;eigenen Befehlssatz mitbringt (den ich nat&amp;uuml;rlich noch mit Symbolen versehen werde, aber erst sp&amp;auml;ter  &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt; ),&lt;br /&gt;werden erst sp&amp;auml;ter implementiert.&lt;br /&gt;&lt;br /&gt;Was ich heute und gestern geschrieben habe ist der (s.&amp;Uuml;berschrift) &lt;b&gt;Blitzmax -&amp;gt; MaxLib Konverter&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Das ist kein eigenst&amp;auml;ndiges Programm, sondern wird ganz einfach in den Code eingef&amp;uuml;gt:&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Import &amp;quot;bmx2lib.bmx&amp;quot;   'sp&amp;auml;ter vermutlich sowas, wie &amp;quot;Import lordst.bmx2lib&amp;quot; XD[/syntax]&lt;br /&gt;&lt;br /&gt;Man definiert seine &lt;b&gt;Funktionen wie gewohnt&lt;/b&gt;, mit einer kleinen, aber feinen &amp;Auml;nderung:&lt;br /&gt;&lt;br /&gt;Das &lt;b&gt;Hauptprogramm&lt;/b&gt; bleibt &lt;b&gt;komplett leer&lt;/b&gt;, bis auf eine winzige, aber entscheidende Befehlszeile:&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]bmx2lib()[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dieser Befehl ortet die Assemblerdateien, die BlitzMax schreibt, wenn es ein Programm kompiliert&lt;br /&gt;und liest diese ein (daran habe ich gestern gesessen).&lt;br /&gt;Danach liest er alle &lt;b&gt;wichtigen Daten&lt;/b&gt; aus der Datei f&amp;uuml;r die &lt;b&gt;sp&amp;auml;tere MaxLib&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;So sah mein Code aus:&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Import &amp;quot;bmx2lib.bmx&amp;quot;&lt;br /&gt;&lt;br /&gt;bmx2lib()&lt;br /&gt;&lt;br /&gt;Function TestFunktion()&lt;br /&gt;	Return 42&lt;br /&gt;End Function[/syntax]&lt;br /&gt;&lt;br /&gt;Nachdem ich kompiliert habe schaue ich erwartungsvoll in meinen Projektordner und stelle erfreut fest,&lt;br /&gt;dass alles geklappt hat  &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; &lt;br /&gt;&lt;br /&gt;Jetzt muss ich die MaxLib nur noch aufrufen:&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Local test:TMaxlib=LoadMaxLib(&amp;quot;testlib.lib&amp;quot;)&lt;br /&gt;Global TestFunktion:Int()=GetSymbolAddress(test,&amp;quot;TestFunktion&amp;quot;)&lt;br /&gt;Print TestFunktion()[/syntax]&lt;br /&gt;&lt;br /&gt;Und, hurra, &lt;b&gt;Print&lt;/b&gt; schreibt '&lt;b&gt;42&lt;/b&gt;' in mein IDE.  &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Danke f&amp;uuml;rs Lesen,&lt;br /&gt;Mfg,&lt;br /&gt;LordSt</description>
			<pubDate>Tue, 11 Jan 2011 18:32:58 +0100</pubDate>
		</item>

		<item>
			<title>Kleine Erfolge</title>
			<link>https://www.blitzforum.de/worklogs/439/#3113</link>
			<guid>https://www.blitzforum.de/worklogs/439/#3113</guid>
			<author>Lord Stweccys</author>
			<description>Hallo und herzlich willkommen zu meinem zweiten Worklog (der erste ist ziemlich verstaubt...)!&lt;br /&gt;&lt;br /&gt;Manche haben es vielleicht schon &lt;a href=&quot;https://www.blitzforum.de/forum/viewtopic.php?t=36445&quot; target=&quot;_blank&quot;&gt;hier&lt;/a&gt; gelesen: Ich versuche mich gerade daran &lt;b&gt;dynamische Bibliotheken&lt;/b&gt; in BlitzMax zu verwirklichen.&lt;br /&gt;&lt;i&gt;(Kurzerhand habe ich das ganze MaxLibs genannt, wollte es zuerst Maxdul nennen, aber das ist irgendwie komisch auszusprechen  &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt; )&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Das Prinzip ist einfach: Man l&amp;auml;dt Code (vorher auf der Festplatte abgespeichert) in der/die/das &lt;b&gt;RAM&lt;/b&gt;, zieht den &lt;b&gt;Pointer&lt;/b&gt; auf eine &lt;b&gt;Funktion&lt;/b&gt; und f&amp;uuml;hrt diese aus.&lt;br /&gt;&lt;br /&gt;Nunja, das klingt ziemlich einfach, aber auch hier gibt es H&amp;uuml;rden, z.B., dass FASM einfach nicht kapieren will, das mir die Pointer im Header als Byte nur Nachteile bringen.  &lt;img src=&quot;/forum/images/smiles/icon_sad.gif&quot; alt=&quot;Sad&quot; /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Es stehen schon ein paar kleine Befehle (2 um genau zu sein):&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; &lt;b&gt;LoadMaxLib:TMaxLib(Dateiname)&lt;/b&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; &lt;b&gt;GetSymbolAddress:Byte ptr(MaxLib,Symbolsname)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Den ersten verwendet man, ganz klar, um die &lt;b&gt;MaxLib in den Speicher&lt;/b&gt; zu laden.&lt;br /&gt;Den zweiten kann man verwenden um zuvor definierte &lt;b&gt;Symbole als Pointer&lt;/b&gt; zu bekommen, das m&amp;uuml;ssen nicht &lt;b&gt;Funktionen&lt;/b&gt; sein, &lt;b&gt;Variablen&lt;/b&gt; gehen theoretisch auch. (Noch nicht, aber sp&amp;auml;ter vielleicht)&lt;br /&gt;&lt;br /&gt;Als Test habe ich mir eine kleine Bibliothek &amp;quot;Code.lib&amp;quot; geschrieben, allerdings noch nicht in BlitzMax, sondern erstmal in Assembler, denn die Konvertierung kommt erst sp&amp;auml;ter dran.&lt;br /&gt;&lt;br /&gt;So sieht der Code der Bibliothek aus:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox1&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('1')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox1&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('1')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox1&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('1');&quot;&gt;use32&lt;br /&gt;&lt;br /&gt;db &amp;quot;BLIB&amp;quot;&lt;br /&gt;db 0&lt;br /&gt;db 8,&amp;quot;Funktion&amp;quot;,_Funktion&lt;br /&gt;_Funktion&amp;#58;&lt;br /&gt;mov eax,42&lt;br /&gt;ret&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Hier kommt die Erkl&amp;auml;rung:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;use32&lt;/b&gt; sagt erstmal, dass das ganze f&amp;uuml;r ein x86-System kompiliert werden soll&lt;br /&gt;&lt;b&gt;db &amp;quot;BLIB&amp;quot;&lt;/b&gt; - das ist die MagicNumber die am Anfang einer jeden MaxLib stehen muss&lt;br /&gt;&lt;b&gt;db 0&lt;/b&gt; signalisiert, dass es genau eine Funktion gibt, mit&lt;br /&gt;&lt;b&gt;db 8&lt;/b&gt;, (also 8 Zeichen) &lt;b&gt;&amp;quot;Funktion&amp;quot;&lt;/b&gt;, welche auf den Zeiger &lt;b&gt;_Funktion&lt;/b&gt; verweist.&lt;br /&gt;Diese Funktion besteht eigentlich nur daraus, dass die Zahl &lt;b&gt;42&lt;/b&gt; returned wird.&lt;br /&gt;&lt;br /&gt;Mein &lt;b&gt;BlitzMax-Code&lt;/b&gt; sieht so aus:&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Local test:TMaxlib=LoadMaxLib(&amp;quot;code.bin&amp;quot;)&lt;br /&gt;Local func:Int()=GetSymbolAddress(test,&amp;quot;Funktion&amp;quot;)&lt;br /&gt;Print func()[/syntax]&lt;br /&gt;&lt;br /&gt;Da bin ich schon ein wenig stolz, denn Print gibt tats&amp;auml;chlich &amp;quot;42&amp;quot; aus.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Danke f&amp;uuml;rs Lesen, ich denke weitere Eintr&amp;auml;ge werden noch folgen und ich hoffe MaxLibs wird ein erfolgreiches Modul  &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; &lt;br /&gt;&lt;br /&gt;Mfg,&lt;br /&gt;LordSt&lt;br /&gt;</description>
			<pubDate>Sun, 09 Jan 2011 16:14:08 +0100</pubDate>
		</item>


	</channel>
</rss>
