PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » Код пурика в коды ассемблера


Код пурика в коды ассемблера

Сообщений 1 страница 5 из 5

1

Что то подобное слышал, что коды пурика переводят в промежуточный код Fasm, но как сделать не знаю. Хочется зачастую посмотреть код написанной проги на асме.

0

2

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

0

3

Спасибо листинг одного из примеров создал, подкорректировал, а вот как его преобразовать в готовый exe не знаю, ладно надо справку читать  :D

0

4

Нашел ответ почти там же, где ты указал Петр: создать батник
"C:\Program Files\PureBasic\Compilers\pbcompiler.exe" /REASM file.asm

Отредактировано haav (02.02.2010 07:21:50)

0

5

Чтобы было удобно:

Код:
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


Вы здесь » PureBasic - форум » PureBasic для Windows » Код пурика в коды ассемблера