Что то подобное слышал, что коды пурика переводят в промежуточный код Fasm, но как сделать не знаю. Хочется зачастую посмотреть код написанной проги на асме.
Код пурика в коды ассемблера
Страница: 1
Сообщений 1 страница 5 из 5
Поделиться201.02.2010 20:58:11
kvitaliy здесь выкладывал прогу, которая выполняет требуемое действие, т. е. создаёт ассемблерный листинг проги.
Код:
;-Constants (WINDOW1)
#Window1 = 1
#W1Btn1 = 1
#W1Btn2 = 2
#W1Text1 = 3
#W1Option1 = 4
#W1Option2 = 5
#W1Check1 = 6
#MV_Checked = 1
#MV_RunWait =1
#MV_RunInvisible = 2
#MV_CreateDll = " /DLL"
#MV_createAsm = " /COMMENTED"
#Window1Flags = #PB_Window_ScreenCentered | #PB_Window_SystemMenu
;- Variables definition
Define.s SourceFileName, DestFileName, CompilFlag, CompilerPath, Compiler, Parameter
Define.l RunOption
;-Program Start
;Check Program Parameter the Source File
SourceFileName = ProgramParameter()
If SourceFileName = "" ;If not running as PB Tool request Pb File
SourceFileName = OpenFileRequester("PBasic исходный файл", "", "PBasic file |*.pb", 0 )
If SourceFileName = ""
MessageRequester("Compile TO ...", "Исходный файл не выбран", #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
End
EndIf
EndIf
If OpenWindow( #Window1, 0,0,390,137,"Compile To...", #Window1Flags)
If CreateGadgetList(WindowID(1))
ButtonGadget(#W1Btn1,300,110 ,89,25,"Выход")
ButtonGadget(#W1Btn2,210,110 ,89,25,"Создать")
TextGadget(#W1Text1,10,10 ,381,17,"Исходный файл:")
OptionGadget(#W1Option1,240,40 ,153,25,"Сгенерировать DLL")
OptionGadget(#W1Option2,240,70 ,153,25,"Сгенерировать ASM")
CheckBoxGadget(#W1Check1,10,110,170,25,"Показать окно компилятора")
EndIf
SetGadgetText(#W1Text1,"Исходный файл: " + SourceFileName)
;SetGadgetState(#W1Check1, #MV_Checked)
RunOption = #MV_RunInvisible | #MV_RunWait
Repeat
Delay(1)
EventID.l = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case #W1Btn1 ;Quit Button
CloseWindow(#Window1)
End
Case #W1Btn2 ;Create Button
If Len(CompilFlag) > 0
DeleteFile(DestFileName) ;Delete the old file
CompilerPath = "c:\Program Files\PureBasic\Compilers" ; Не забудте поменять на ваш путь к компилятору !!
Compiler = CompilerPath + "\PbCompiler.exe" ; The PB Compiler !!
Parameter = Chr(34) + SourceFileName + Chr(34) + CompilFlag
RunProgram(Compiler , Parameter, CompilerPath, RunOption)
Select CompilFlag
Case #MV_CreateDll
CopyFile(CompilerPath + "\purebasic.dll", DestFileName)
Case #MV_createAsm
CopyFile(CompilerPath + "\purebasic.asm", DestFileName)
EndSelect
If ExamineDirectory(0,GetPathPart(DestFileName),GetFilePart(DestFileName))
If NextDirectoryEntry(0) = 1
MessageRequester("Compile TO ...", DestFileName + " файл создан!", #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
Else
MessageRequester("Compile TO ...", "Создание файла потерпело " + DestFileName + " неудачу!", #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
EndIf
EndIf
Else
MessageRequester("Compile TO ...", "Пожалуйста выберите что скомпилировать", #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
EndIf
Case #W1Option1 ;Dll option checked
If GetGadgetState(#W1Option1) = #MV_Checked
CompilFlag = #MV_CreateDll
DestFileName = Left(SourceFileName,Len(SourceFileName) - 3) + ".dll"
EndIf
Case #W1Option2 ;Asm option checked
If GetGadgetState(#W1Option2) = #MV_Checked
CompilFlag = #MV_createAsm
DestFileName = Left(SourceFileName,Len(SourceFileName) - 3) + ".asm"
EndIf
Case #W1Check1 ;Compiler Run Mode
If GetGadgetState(#W1Check1) = #MV_Checked
RunOption = #MV_RunWait
Else
RunOption = #MV_RunInvisible | #MV_RunWait
EndIf
EndSelect
Case #WM_LBUTTONUP ;----LEFT BUTTON UP
Case #WM_LBUTTONDOWN ;----LEFT BUTTON DOWN
Case #WM_MOUSEMOVE ;----MOUSE MOVE
EndSelect
Until EventID = #PB_Event_CloseWindow
EndIf
EndПоделиться302.02.2010 06:49:53
Спасибо листинг одного из примеров создал, подкорректировал, а вот как его преобразовать в готовый exe не знаю, ладно надо справку читать 
Поделиться402.02.2010 07:20:49
Нашел ответ почти там же, где ты указал Петр: создать батник
"C:\Program Files\PureBasic\Compilers\pbcompiler.exe" /REASM file.asm
Отредактировано haav (02.02.2010 07:21:50)
Поделиться502.02.2010 19:34:00
Чтобы было удобно:
Код:
Enumeration
#Win
#Button_0
#Button_1
EndEnumeration
#Kompilyator = "C:\Program Files\PureBasic\Compilers\pbcompiler.exe "
Procedure Open_Win()
If OpenWindow(#Win, 421, 226, 165, 60, "PureBasic", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ButtonGadget(#Button_0, 10, 5, 145, 20, "Создать файл ASM")
ButtonGadget(#Button_1, 10, 35, 145, 20, "Создать файл EXE")
EndIf
EndProcedure
Open_Win()
Repeat
event=WaitWindowEvent()
If event=#PB_Event_Gadget
Select EventGadget()
Case #Button_0
Filename$ = OpenFileRequester("Выбрать файл PB", File$, "Purebasic (*.pb*)|*.pb*", 0)
If Filename$<>""
RunProgram(#Kompilyator, Chr(34)+Filename$+Chr(34)+" /COMMENTED",GetPathPart(Filename$),0)
EndIf
Case #Button_1
Filename$ = OpenFileRequester("Выбрать файл Asm", File$, "FASM (*.asm*)|*.asm*", 0)
If Filename$<>""
RunProgram(#Kompilyator, Chr(34)+Filename$+Chr(34)+" /REASM",GetPathPart(Filename$),0)
EndIf
EndSelect
EndIf
Until event=#PB_Event_CloseWindowПуть к компилятору прописываем свой
Страница: 1
Похожие темы
| Не идет код асэмблера FASM на пурике (в настройках галочку поставил) | Вопросы по PureBasic | 13.11.2011 |
| Создатель программ | Вопросы по PureBasic | 11.09.2010 |
| Cвернуть все окна | OpenSource | 15.03.2011 |
| Вопросы новичка (продолжение…) | Вопросы по PureBasic | 29.06.2024 |