Что то подобное слышал, что коды пурика переводят в промежуточный код 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 |