FASM Tutorial
Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials
VertexBetreff: FASM Tutorial |
Di, Jan 11, 2005 0:53 Antworten mit Zitat |
|
---|---|---|
Auch wenn es wieder direkt mit BMax nix zu tun hat, hier gibt es ein super FASM Tutorial den auch BMax benutzt. http://decard.net/?body=docs
Wer es noch nicht bemerkt hat, im .bmx Verzeichnis des Projekts sind Assemblerdateien, und Objektdateien wieder zu finden. Code: [AUSKLAPPEN] Print "Hello World"
WaitKey wird Code: [AUSKLAPPEN] format MS COFF
extrn ___bb_appstub_appstub extrn ___bb_audio_audio extrn ___bb_bank_bank extrn ___bb_bankstream_bankstream extrn ___bb_basic_basic extrn ___bb_blitz_blitz extrn ___bb_blitzgl_blitzgl extrn ___bb_bmploader_bmploader extrn ___bb_font_font extrn ___bb_freeaudioaudio_freeaudioaudio extrn ___bb_freejoy_freejoy extrn ___bb_freetypefont_freetypefont extrn ___bb_glew_glew extrn ___bb_glmax2d_glmax2d extrn ___bb_jpgloader_jpgloader extrn ___bb_map_map extrn ___bb_oggloader_oggloader extrn ___bb_pngloader_pngloader extrn ___bb_retro_retro extrn ___bb_tgaloader_tgaloader extrn ___bb_wavloader_wavloader extrn ___bb_win32_win32 extrn _bbStringClass extrn _brl_standardio_Print extrn _brl_system_WaitKey public __bb_main section "code" code __bb_main: push ebp mov ebp,esp cmp dword [_6],0 je _7 mov eax,0 pop ebp ret _7: mov dword [_6],1 call ___bb_blitz_blitz call ___bb_appstub_appstub call ___bb_audio_audio call ___bb_bank_bank call ___bb_bankstream_bankstream call ___bb_basic_basic call ___bb_blitzgl_blitzgl call ___bb_bmploader_bmploader call ___bb_font_font call ___bb_freeaudioaudio_freeaudioaudio call ___bb_freetypefont_freetypefont call ___bb_glmax2d_glmax2d call ___bb_jpgloader_jpgloader call ___bb_map_map call ___bb_oggloader_oggloader call ___bb_pngloader_pngloader call ___bb_retro_retro call ___bb_tgaloader_tgaloader call ___bb_wavloader_wavloader call ___bb_freejoy_freejoy call ___bb_glew_glew call ___bb_win32_win32 push _3 call _brl_standardio_Print add esp,4 call _brl_system_WaitKey mov eax,0 jmp _4 _4: pop ebp ret section "data" data writeable _6: dd 0 _3: dd _bbStringClass dd 2147483647 dd 11 dw 72,101,108,108,111,32,87,111 dw 114,108,100 wobei das hier wohl am interessantesten ist: Code: [AUSKLAPPEN] push _3
call _brl_standardio_Print add esp,4 call _brl_system_WaitKey mov eax,0 jmp _4 _4: pop ebp ret section "data" data writeable _6: dd 0 _3: dd _bbStringClass dd 2147483647 dd 11 dw 72,101,108,108,111,32,87,111 dw 114,108,100 Bei Label _3 steht der String "Hello World". dd 11 ist die Länge des Strings dw 72,101,108,108,111,32,87,111,114,108,100 sind die ASCII Codes für "Hello World". 72 = "H", 101 = "e", 108 = "l", 108 = "l" usw. über push _3 wird die Adresse von Label 3 wo unser String drin steht, auf den Stack gelegt, und dann per call _brl_standardio_Print das normale "Print" im Quellcode aufgerufen. Diese funktion nimmt sich dann das übergebene Parameter wieder vom Stack herunter. Auf den Stack kommen also immer Übergabeparameter wie z. B. Adressen wo was steht. Lokale Variablen kommen übrigens auch auf den stack, und werden dann wieder "herunter genommen" wenn sie nichtmehr gebraucht werden. call _brl_system_WaitKey ruft dann gleichbedeutend die Funktion WaitKey auf, und wartet eben auf den Tastendruck. Für Assemblerneulinge: Nein, die Funktionen wie _brl_standardio_Print gibt es nicht standardmäßig! Es sind eingebundene Blitzfunktionen die ebenfalls aus Assemblerbefehlen wie MOV, PUSH, POP usw. bestehen. Also einfach FASM herunterladen, und ohne BMax zu besitzen, mal eben ein Hello World zus chreiben geht nicht, da die Libs fehlen. mfg olli |
||
vertex.dreamfall.at | GitHub |
xperience2003Betreff: ... |
Mi, März 16, 2005 17:06 Antworten mit Zitat |
|
---|---|---|
jo, is ne feine sache mit dem asm text
wer sich nun nen bissel auskennt, kann sein prog richtig optimieren in dem beispiel zb, die imageloader rausschmeisen etc, neu assemlieren und man hat ne viel kleinere exe schade das es aufm pc keine guten asm-optimizer gibt, die unbenutzte sachen automatisch killen und schleifen etc vereinfachen |
||
-digital art since 1990- |
Dreamora |
Mi, März 16, 2005 18:00 Antworten mit Zitat |
|
---|---|---|
dafür hat man hochoptimierte C++ compiler wie der GCC der für die Windows Module benutzt wird ... von dem auf handgeschrieben ist nimmer so wirklich viel rauszuholen. Wer net totaler Pro in ASM ist, kanns also nur langsamer machen. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials
Powered by phpBB © 2001 - 2006, phpBB Group