Макросы, бессмысленные и беспощадные

Тема в разделе "WASM.BEGINNERS", создана пользователем Mikl___, 20 фев 2023.

  1. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Привет, All!
    Подскажите как... Требуется запустить 128 thread, у каждого треда почти одинаковая процедура, но писать их ручками как-то неохота. Вроде бы, очень к месту макросы типа REPT
    Код (ASM):
    1. k = 0
    2. REPT 128
    3. . . . <-- изменяющийся фрагмент, где встречается k, которое будет заменено на увеличивающееся число
    4. k =k+1
    5. endm
    Имена процедур тредов ThreadProc0, ThreadProc1, ... , ThreadProc127. Как оформить процедуры тредов используя макрос REPT ? ThreadProc&k ?
     
  2. mantissa

    mantissa Мембер Команда форума

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    155
    По какой-то причине при использовании ThreadProc&k, препроцессор не передает само значение k, а подставляет саму букву. Решение - @CatStr (MSDN)
    Код (Text):
    1. .code
    2.  
    3. k = 5
    4. REPT k
    5.     @CatStr(<ThreadWork_>, %k, < proc>)
    6.     ; Insert your code for the thread procedure here
    7.     ret
    8.     @CatStr(<ThreadWork_>, %k, < endp>)
    9.     k = k - 1
    10. ENDM
    11.  
    12. WinMain proc
    13. ret
    14. WinMain endp
    15.  
    16. end
    На выходе получается:
    upload_2023-2-20_19-41-35.png
    Источник: https://stackoverflow.com/questions...-a-variable-to-create-distinct-proc-functions
     

    Вложения:

    Mikl___ нравится это.
  3. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Ассемблер какой? В FASM'е все просто:
    Код (ASM):
    1. rept 128 k
    2. {
    3.    thread_proc#k:
    4.    mov eax, k
    5.    ret
    6. }    
     
    Mikl___ нравится это.
  4. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Тот случай, когда макросы действительно бессмысленны.
     
    LifeForceASD нравится это.
  5. LifeForceASD

    LifeForceASD Member

    Публикаций:
    0
    Регистрация:
    16 сен 2022
    Сообщения:
    43
    Адрес:
    ntoskrnl.exe
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Rel и mantissa нравится это.