Leider muss ich nochmals die Frage "wie bekommt man eine Asseblerschleife hin" stellen. Im Moment benutze ich noch die DemoVersion 3.92. Bitte eine Beispielcode, der auch genausolauft
MessageRequester("Info"," Start", 0)
; was muss ich in ASM tun um folgendes hinzubekommen!
for i =1 to 100
next i
MessageRequester("Info"," Stop", 0)
Schleife
-
the one and only
- Beiträge: 696
- Registriert: 26.09.2004 20:17
- Kontaktdaten:
In meiner Unendliche Güte habe ich dem dem PureBasic Compiler diese 3 Zeilen Code zu futtern gegeben. Er spuckte folgendes aus:
Allerdings wirst du wahrscheinlich die Vollversion brauchen um das zu Assemblieren (So einfach mi Fasm ohne PB gehts denk ich nicht, das Public Zeugs da wird denk ich beim Reassemblieren (Oder wie das heißt) von Purebasic mit irgendwas verknüpft oder durch Api Calls ersetzt)
Code: Alles auswählen
;
; PureBasic x86 v3.92 generated code
;
; (c) 2004 Fantaisie Software
;
; The header must remain intact for Re-Assembly
;
; Requester
; SimpleList
;
format MS COFF
;
extrn _ExitProcess@4
extrn _GetModuleFileNameA@12
extrn _GetModuleHandleA@4
extrn _HeapAlloc@12
extrn _HeapCreate@12
extrn _HeapDestroy@4
extrn _HeapFree@12
extrn _SetCurrentDirectoryA@4
;
extrn _PB_FreeSimpleLists@0
extrn _PB_InitRequester@0
extrn _PB_InitSimpleList@0
extrn _PB_MessageRequester2@12
extrn _memset
extrn _SYS_FreeStructureStrings@8
extrn PB_FreeArray
extrn PB_FreeStringStructuredArray
extrn SYS_AllocateString
extrn SYS_FastAllocateString
extrn SYS_FastAllocateStringFree
extrn SYS_FreeString
extrn SYS_CopyString
extrn SYS_StringEqual
extrn SYS_StringSup
extrn SYS_StringInf
public PB_NullString
;
public _PB_Instance
public _PBV_ExecutableType
public _PB_MemoryBase
public PB_Instance
public PB_MemoryBase
public _PB_EndFunctions
public _PB_StringBase
public PB_StringBase
public _PB_DEBUGGER_LineNumber
public _PB_DEBUGGER_IncludedFiles
macro align value { rb (value-1) - ($-_PB_DataSection + value-1) mod value }
macro bssalign value { rb (value-1) - ($-_PB_BSSSection + value-1) mod value }
public _WinMain@16
;
section '.text' code readable executable
;
;
_WinMain@16:
;
PUSH dword I_BSSEnd-I_BSSStart
PUSH dword 0
PUSH dword I_BSSStart
CALL _memset
ADD esp,12
MOV eax,[esp+4]
MOV [_PB_Instance],eax
PUSH dword 0
PUSH dword 4000
PUSH dword 0
CALL _HeapCreate@12
MOV [PB_MemoryBase],eax
CALL _PB_InitSimpleList@0
CALL _PB_InitRequester@0
;
; InitString()
;
PUSH dword 64000
PUSH dword 8
PUSH dword [PB_MemoryBase]
CALL _HeapAlloc@12
MOV [PB_StringBase],eax
; :
; For i =1 To 100
MOV dword [v_i],1
_For1:
MOV eax,100
CMP eax,dword [v_i]
JL _Next2
;
; Next i
_NextContinue2:
INC dword [v_i]
JMP _For1
_Next2:
;
; MessageRequester("Info"," Stop", 0)
PUSH dword 0
PUSH dword _S1
PUSH dword _S2
CALL _PB_MessageRequester2@12
_PB_EOP_NoValue:
PUSH dword 0
_PB_EOP:
CALL _PB_EndFunctions
PUSH dword [PB_MemoryBase]
CALL _HeapDestroy@4
CALL _ExitProcess@4
_PB_EndFunctions:
CALL _PB_FreeSimpleLists@0
RET
;
;
section '.data' data readable writeable
;
_PB_DataSection:
_PB_DEBUGGER_LineNumber: dd -1
_PB_DEBUGGER_IncludedFiles: dd 0
_PBV_ExecutableType: dd 0
_S1: db " Stop",0
_S2: db "Info",0
PB_NullString: db 0
align 4
s_s:
dd 0
dd -1
;
section '.bss' readable writeable
_PB_BSSSection:
bssalign 4
;
I_BSSStart:
_PB_MemoryBase:
PB_MemoryBase: rd 1
_PB_StringBase:
PB_StringBase: rd 1
_PB_Instance:
PB_Instance: rd 1
;
bssalign 4
PB_DataPointer rd 1
v_i rd 1
bssalign 4
bssalign 4
bssalign 4
bssalign 4
I_BSSEnd:
section '.data' data readable writeable
SYS_EndDataSection:-
Martin66119
- Beiträge: 282
- Registriert: 03.01.2005 11:36
Das wollte ich eigentlich nicht
ich wollte eigentlich den Code in Assembler für eine einfache schleife.
Nicht den Disassemblierten Code einer Exe.
Nicht den Disassemblierten Code einer Exe.
-
the one and only
- Beiträge: 696
- Registriert: 26.09.2004 20:17
- Kontaktdaten:
-
Martin66119
- Beiträge: 282
- Registriert: 03.01.2005 11:36
Ja habe ich bekommen. Nur es klappt nicht
;---------------------------------------
; For i= 0 To 20000000
MOV dword [v_i],0
_For1:
MOV eax,20000000
CMP eax,dword [v_i]
JL _Next2
;
; Next i
_NextContinue2:
INC dword [v_i]
JMP _For1
_Next2:
;-------------------------------------------
und das
--------------------------------------------
mov ecx, 2000000 ;oder ne andere Zahl
dein_label:
;mache hier was du willst
loop
_________________________________
habe ich bekommen.
Wenn ich das aber eintippe gehts nicht.
Was mache ich falsch!!
;---------------------------------------
; For i= 0 To 20000000
MOV dword [v_i],0
_For1:
MOV eax,20000000
CMP eax,dword [v_i]
JL _Next2
;
; Next i
_NextContinue2:
INC dword [v_i]
JMP _For1
_Next2:
;-------------------------------------------
und das
--------------------------------------------
mov ecx, 2000000 ;oder ne andere Zahl
dein_label:
;mache hier was du willst
loop
_________________________________
habe ich bekommen.
Wenn ich das aber eintippe gehts nicht.
Was mache ich falsch!!
