purebasic.info

PureBasic forum
Текущее время: Ср сен 19, 2018 12:21 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: перевод программ с PB в ASM
СообщениеДобавлено: Сб дек 11, 2010 6:34 pm 
Не в сети
доцент

Зарегистрирован: Вт дек 07, 2010 3:49 pm
Сообщений: 45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
много видел постов на тему того что пурик сначало переводи свой код в асм а потом компилит! так вот вопрос в том как получить этот промежуточный перевод в асм под маком?

заранее благодарен! :roll:

_________________
Mac OS X 10.6 PureBasic 4.51


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 11, 2010 6:52 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вт апр 14, 2009 7:22 pm
Сообщений: 305
Благодарил (а): 1 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
Reference manual
Various Topics
Using the command line compiler
см в этом месте справки если она есть для мака


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 11, 2010 8:39 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
Здесь kvitaliy выкладывал требуемую прогу, правда, под винду.
Думаю что после небольшой модификации, будет работать и под маком.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 11, 2010 9:47 pm 
Не в сети
доцент

Зарегистрирован: Вт дек 07, 2010 3:49 pm
Сообщений: 45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
ага вот оригинал)

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
;-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\PureBasic4\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



в маке этот код в оригенале не работает - буду разбератся!

_________________
Mac OS X 10.6 PureBasic 4.51


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 11, 2010 10:22 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
В первую очередь, надо указать путь к компилятору.
zag писал(а):
                                CompilerPath = "c:\Program Files\PureBasic4\Compilers"           ; Не забудте поменять на ваш путь к компилятору !!

                                Compiler = CompilerPath + "\PbCompiler.exe"                     ; The PB Compiler !!

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 12, 2010 6:58 pm 
Не в сети
доцент

Зарегистрирован: Вт дек 07, 2010 3:49 pm
Сообщений: 45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
))) блин а я неглядя так воткнул) спасибо попробую!!!

_________________
Mac OS X 10.6 PureBasic 4.51


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 12, 2010 7:15 pm 
Не в сети
доцент

Зарегистрирован: Вт дек 07, 2010 3:49 pm
Сообщений: 45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
да и еще мак не знает про #MB_ICONINFORMATION

_________________
Mac OS X 10.6 PureBasic 4.51


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 12, 2010 7:22 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
zag писал(а):
да и еще мак не знает про #MB_ICONINFORMATION

Это WinAPI константа.
Просто убери её из текста программы.
И это тоже убери
Код:
1
2
3
4
5
                Case #WM_LBUTTONUP     ;----LEFT BUTTON UP 
   
                Case #WM_LBUTTONDOWN   ;----LEFT BUTTON DOWN
 
                Case #WM_MOUSEMOVE     ;----MOUSE MOVE


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 12, 2010 7:29 pm 
Не в сети
доцент

Зарегистрирован: Вт дек 07, 2010 3:49 pm
Сообщений: 45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
да я понял уже) пасибо)

_________________
Mac OS X 10.6 PureBasic 4.51


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 05, 2011 8:57 pm 
Не в сети
студент
Аватар пользователя

Зарегистрирован: Пт фев 04, 2011 3:56 am
Сообщений: 9
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
у меня вопрос без привязки к МАК оси

имеет ли смысл перевод кода программы на пурике в (фасм/асм) с целью уменьшения ее веса и повышения быстродействия?
( сохранится ли в этом случае свойства программ на пурике работать не зависимо от установленных дополнительных библиотек в системе (виндос системы как минимум)
и насколько это перевод эффективен и почему ?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 05, 2011 9:31 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт фев 26, 2009 1:53 am
Сообщений: 1154
Откуда: Беларусь, Витебск
Благодарил (а): 22 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
хм. А что вы имеете в виду под "переводом кода"?
И... Если вопрос без привязки к Маку, почему он в Разных вопросах мака?
Не сочтите за придирку, просто умение четко и доступно выражать свои мысли многого стоит.

_________________
Ubuntu 10.10, PureBasic 4.61 x86
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 05, 2011 9:33 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
kong0 писал(а):
имеет ли смысл перевод кода программы на пурике в (фасм/асм)

Вижу товарищ не понял сути. Этот перевод производится ВСЕГДА как только ты нажимаешь кнопочку Компиляция-Запуск или в меню Создать приложение. Потом соответственно Этот полученный АСМ код компилируется при помощи FASM в конечный ЕХЕ файл.

Для увеличение быстродействия или уменьшения веса целесообразно делать вставки на встраиваемом в код Ассемблере.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 05, 2011 9:36 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
kong0 писал(а):
имеет ли смысл перевод кода программы на пурике в (фасм/асм)с целью уменьшения ее веса и повышения быстродействия ?
Перевод в асм, производится на этапе компиляции.

Для увеличения быстродействия, можно написать на ассемблере (выполнить в виде асм. вставки в код) наиболее критические участки по времени выполнения.
Для уменьшения размера программы, можно отказаться от использования имеющихся библиотек и писать программу полностью на API.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс фев 06, 2011 1:02 am 
Не в сети
студент
Аватар пользователя

Зарегистрирован: Пт фев 04, 2011 3:56 am
Сообщений: 9
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
пара вопросов
1 значит ли это что на каком бы не писал (или большинство других языков) на этапе компиляции в .ехе код переводится в асм ?
или это фитчя только компилятора пурика ?
2 если все переводится в асм автоматом при компиляции в .ехе зачем тогда людям мучатся учить асм ? верятно (угадаю?) потому что при конвертации из другова языка в асм код полуачается длинее ?

пс я нюъб не пинаите сильно, думал как бы код поменьше и пошустре делать услышал про фитчю перевода в асм возникли вопросы
:roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс фев 06, 2011 1:17 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
kong0 писал(а):
значит ли это что на каком бы не писал (или большинство других языков) на этапе компиляции в .ехе код переводится в асм ?

Нет, это фича пурика, т. к. он использует FASM (Flat Assembler) для создания исполняемых файлов.

kong0 писал(а):
если все переводится в асм автоматом при компиляции в .ехе зачем тогда людям мучатся учить асм ?

Потому что перевод в асм вовсе не значит что будет малый размер исполняемого файла и высокое быстродействие.
Посмотреть асм код, генерируемый пуриком, можно с помощью этой проги

kong0 писал(а):
я нюъб не пинаите сильно

Пинать не будем, но если возникнут другие, мелкие вопросы общего характера, которые не требуют долгого и обширного обсуждения, то задавай их в этой теме, а данная тема, только для вопросов, связанных с программированием на MacOS.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB