flat assembler
Message board for the users of flat assembler.
Index
> Main > Macro which will create the same code in the right place Goto page 1, 2 Next |
Author |
|
comrade 23 Feb 2013, 14:24
Put the code in the macro? If the blocks of code are different, put them in separate macros. Sorry if I misunderstood. Даже по-русски не полностью понял задачу.
|
|||
23 Feb 2013, 14:24 |
|
Roman 23 Feb 2013, 14:54
Comrade я вроде все понятно старался написать.
Как ты говоришь, будет накладно. Код всегда будет отличаться и у меня таких блоков может быть до сотни. И что для каждого макрос писать? Накладно. Мне именно надо что бы макрос был один который копирует любой код из одного места в другой. Короче есть рендер 3д сцены и есть рендер в Карту тени (ShadowMap). Так вот мне надо написав один раз в блоке рендера код по выводу 3д объекта , получить (что бы макрос автоматом создал такой же блок кода) в рендере тени. Что бы 2 раза не писать код руками, для этого я такой макрос хочу создать в Fasme. |
|||
23 Feb 2013, 14:54 |
|
comrade 23 Feb 2013, 15:12
Macros can take parameters. You can use parameters to differentiate the behaviour as you wish. From what you described you can also use subprocedures.
Макросы берут параметры. По параметром и различай какие мелочи там надо изменят. Можно так же создать функцию. Иначе я никак не вижу. |
|||
23 Feb 2013, 15:12 |
|
Roman 23 Feb 2013, 15:32
Не помню в каком примере, но гдето встречал макрос data. Этот макрос из любого места кода заберал дату в section '.data'
По такому принципу ни как не сделать? |
|||
23 Feb 2013, 15:32 |
|
Roman 23 Feb 2013, 15:33
Тоесть дата могла быть в любом месте кода, но потом при компиляции вся дата помещалась в section '.data'
|
|||
23 Feb 2013, 15:33 |
|
Roman 23 Feb 2013, 15:34
Жаль что Томас создатель фасма не откликаеться на подобные темы. А он бы мог точно дать ответ возможно или нет.
|
|||
23 Feb 2013, 15:34 |
|
Roman 23 Feb 2013, 16:10
comrade в макросах я немного разбираюсь. Уже года 4 на Фасме программирую. Но все равно хочеться побольше о макросах знать. Все таки мощный инструмент.
|
|||
23 Feb 2013, 16:10 |
|
baldr 23 Feb 2013, 23:27
Roman,
State your problem clearly, then it probably can be solved. How different are those code blocks? Could they be generated with parametrized macro? |
|||
23 Feb 2013, 23:27 |
|
comrade 24 Feb 2013, 05:14
Roman wrote: Жаль что Томас создатель фасма не откликаеться на подобные темы. А он бы мог точно дать ответ возможно или нет. Извини, что мы всё остальные такие дрозды |
|||
24 Feb 2013, 05:14 |
|
Roman 24 Feb 2013, 06:51
comrade ты зря так про дрозды. Я же не наезжаю и не говорю что все знаю. Я просто пытаюсь выяснить можно или нет.
|
|||
24 Feb 2013, 06:51 |
|
Roman 24 Feb 2013, 06:55
Пишу еще раз:
MacroBegin этот макрос просто создаст локальную метку. Метка которая означает начало кода который копируем. MacroBegin Блок кода, разные команды(могут быть Call) MacroEnd AdressToPasteCodeBlock MacroEnd этот макрос определяет длинну и конец кода который копируем, а AdressToPasteCodeBlock - это адрес где будет создан такой же код блока К примеру в подпрограмме RenderShadowMap. |
|||
24 Feb 2013, 06:55 |
|
Roman 24 Feb 2013, 06:56
Сам блок кода может быть от 10 до сотни ассемблерных команд. Тоесть различный.
|
|||
24 Feb 2013, 06:56 |
|
Roman 24 Feb 2013, 07:03
И очень важный момент. Нужно что бы копирование делал именно макрос, а не асм код. Тоесть макрос 1 раз сгенерит код в другом месте моей программы и в екзешнике будет такой код, как если бы писал руками.
А если макрос создает асм код который копирует , то это не годиться. |
|||
24 Feb 2013, 07:03 |
|
comrade 24 Feb 2013, 08:53
Roman wrote: comrade ты зря так про дрозды. Я же не наезжаю и не говорю что все знаю. Я просто пытаюсь выяснить можно или нет. Хаха дай пошутить |
|||
24 Feb 2013, 08:53 |
|
Roman 24 Feb 2013, 11:08
comrade радуешься что можно по русски шутить, потому что мало кто по русски понимает на этом сайте?
|
|||
24 Feb 2013, 11:08 |
|
JohnFound 25 Feb 2013, 13:00
For data definitions, see "globals.inc" macro library in FreshLib.
|
|||
25 Feb 2013, 13:00 |
|
l_inc 25 Feb 2013, 19:40
Roman
Your problem statement is inconsistent and therefore causes a lot of confusion. First you state, that you don't wanna create separate macros, because you may have hundreds of different code blocks. And afterwards you say, that you are ready to enclose specific code blocks into the MacroBegin and MacroEnd . It's still the same number of different code blocks, isn't it? Besides AdressToPasteCodeBlock won't be a numeric address, right? Just because it's quite hard for a human to predict the address value and to change it every time something is modified in the code. So this is gonna be a label, specifically put into the location, where you want to put some code, right? Thus your notion of the solution syntax is the following: Code: Begin3DDisplayCode mov eax,[eax] End3DDisplayCode ShadowMapRender.3DDisplay ... ShadowMapRender: ... ShadowMapRender.3DDisplay: ... ret ... This should put mov eax,[eax] at the location of the label ShadowMapRender, right? Now explain, why is the following somehow not the same? Code: macro 3DDisplayCode { mov eax,[eax] } ... ShadowMapRender: ... 3DDisplayCode ;location of the ShadowMapRender.3DDisplay label from previous example ... ret ... |
|||
25 Feb 2013, 19:40 |
|
Roman 26 Feb 2013, 12:39
Why so difficult?! I wrote all clear. Okay, I found a simple way. But not using macro. I using asm comand. This method proved easier.
Thought on this website you can learn a lot. I'm disappointed. Too bad. |
|||
26 Feb 2013, 12:39 |
|
Roman 26 Feb 2013, 12:43
l_inc forgive me. But you do not understand me. I say code block different.
Example: mov ebp,[WalsNum] and ebp,ebp jz NoLightOnColona mov esi,Wals LpLineL: mov eax,[esi] add esi,4 mov ecx,[esi] add esi,4 mov ebx,-9.0 Frustum NoLight1 invoke D3DXMatrixTranslation,Wor1,eax,-9.0,ecx D3DCALL pWorldVariable, SetMatrix, Wor1 EffectApply D3DCALL MPlanka2,DrawSubset,NULL And another code block: mov ebp,[WalsNum] and ebp,ebp jz NoLightOnColona mov esi,Wals Frustum NoLight1 invoke D3DXMatrixTranslation,Wor1,eax,-9.0,ecx EffectApply D3DCALL MPlanka2,DrawSubset,NULL |
|||
26 Feb 2013, 12:43 |
|
Goto page 1, 2 Next < Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.