invokex MACRO - Оптимизация

Тема в разделе "WASM.ASSEMBLER", создана пользователем calidus, 14 дек 2007.

  1. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Как можно более менее оптимизировать ??? ... я думаю такой шаблон слишком масивен ....
    Код (Text):
    1. invokex  MACRO  func, arglist, arglist0,arglist1,arglist2,arglist3,arglist4,arglist5,arglist6,arglist7,arglist8,arglist9,arglist10,arglist11 :VARARG
    2.  
    3.   IFB <arglist>
    4.        call func
    5.   ELSE
    6.               IFB <arglist0>
    7.                   push arglist
    8.                   call func
    9.               ELSE
    10.                              IFB <arglist1>
    11.                   push arglist0
    12.                   push arglist
    13.                   call func
    14.                              ELSE
    15.                  
    16.                                                 IFB <arglist2>
    17.                   push arglist1
    18.                   push arglist0
    19.                   push arglist
    20.                   call func
    21.                              ELSE
    22.                  
    23.                                                                      IFB <arglist3>
    24.                   push arglist2
    25.                   push arglist1
    26.                   push arglist0
    27.                   push arglist
    28.                   call func
    29.                              ELSE
    30.                  
    31.                                                                          IFB <arglist4>
    32.                   push arglist3
    33.                   push arglist2
    34.                   push arglist1
    35.                   push arglist0
    36.                   push arglist
    37.                   call func
    38.                              ELSE
    39.                  
    40.                                                                        IFB <arglist5>
    41.                                     push arglist3
    42.                   push arglist4
    43.                   push arglist3
    44.                   push arglist2
    45.                   push arglist1
    46.                   push arglist0
    47.                   push arglist
    48.                   call func
    49.                              ELSE
    50.                  
    51.                                            
    52.                                                           IFB <arglist6>
    53.                   push arglist5
    54.                   push arglist4
    55.                   push arglist3
    56.                   push arglist2
    57.                   push arglist1
    58.                   push arglist0
    59.                   push arglist
    60.                   call func
    61.                              ELSE
    62.                  
    63.                                                                        IFB <arglist7>
    64.                   push arglist6
    65.                   push arglist5
    66.                   push arglist4
    67.                   push arglist3
    68.                   push arglist2
    69.                   push arglist1
    70.                   push arglist0
    71.                   push arglist
    72.                   call func
    73.                              ELSE
    74.                  
    75.                                          
    76.                                                           IFB <arglist8>
    77.                   push arglist7
    78.                   push arglist6
    79.                   push arglist5
    80.                   push arglist4
    81.                   push arglist3
    82.                   push arglist2
    83.                   push arglist1
    84.                   push arglist0
    85.                   push arglist
    86.                   call func
    87.                              ELSE
    88.                  
    89.                                
    90.                                                           IFB <arglist9>
    91.                   push arglist8
    92.                   push arglist7
    93.                   push arglist6
    94.                   push arglist5
    95.                   push arglist4
    96.                   push arglist3
    97.                   push arglist2
    98.                   push arglist1
    99.                   push arglist0
    100.                   push arglist
    101.                   call func
    102.                              ELSE
    103.                  
    104.                                
    105.                                                           IFB <arglist10>
    106.                   push arglist9
    107.                   push arglist8
    108.                   push arglist7
    109.                   push arglist6
    110.                   push arglist5
    111.                   push arglist4
    112.                   push arglist3
    113.                   push arglist2
    114.                   push arglist1
    115.                   push arglist0
    116.                   push arglist
    117.                   call func
    118.                              ELSE
    119.                  
    120.                                                             IFB <arglist11>
    121.                   push arglist10
    122.                   push arglist9
    123.                   push arglist8
    124.                   push arglist7
    125.                   push arglist6
    126.                   push arglist5
    127.                   push arglist4
    128.                   push arglist3
    129.                   push arglist2
    130.                   push arglist1
    131.                   push arglist0
    132.                   push arglist
    133.                   call func
    134.                              ELSE
    135.                   push arglist11
    136.                   push arglist10
    137.                   push arglist9
    138.                   push arglist8
    139.                   push arglist7
    140.                   push arglist6
    141.                   push arglist5
    142.                   push arglist4
    143.                   push arglist3
    144.                   push arglist2
    145.                   push arglist1
    146.                   push arglist0
    147.                   push arglist
    148.                   call func
    149.                              ENDIF
    150.                  
    151.                              ENDIF
    152.                  
    153.                              ENDIF
    154.                  
    155.                              ENDIF
    156.                  
    157.                              ENDIF
    158.                  
    159.                              ENDIF
    160.                  
    161.                              ENDIF
    162.                  
    163.                              ENDIF
    164.                  
    165.                              ENDIF
    166.                  
    167.                              ENDIF
    168.                  
    169.                              ENDIF
    170.                  
    171.               ENDIF
    172.   ENDIF
    173.  ENDM
     
  2. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    http://www.wasm.ru/forum/viewtopic.php?id=18840
     
  3. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Спасибо =) ...да уж с моим не сравнится
     
  4. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    MacroLoop(3): iteration 1: Macro Called From
    MacroLoop(7): iteration 1: Macro Called From
    vxinvoke(16): Macro Called From
    win.asm(542): Main Line Code

    В твоем макросе я убрал vxpush и поставил просто push так как мне не требуется то ....и вот что с такой строки выходит
    vxinvoke _GetModuleHandle, NULL

    _GetModuleHandle вв 0

    интересно то что с моим кодо работает все на ура ....а вот с твоим дето чето не то ....конечно твой компактнее ...но в данном случае дето ошибочка ...несколько раз смотрел ...что может быть ?