Замена Tasm директивы ifdef для Fasm

Тема в разделе "WASM.ASSEMBLER", создана пользователем Evg666, 26 сен 2004.

  1. Evg666

    Evg666 New Member

    Публикаций:
    0
    Регистрация:
    12 май 2004
    Сообщения:
    17
    Адрес:
    Russia
    если кто не помнит я поясню указываешь в командной строке /D Строка



    ifdef Строка

    mov eax,0

    else

    xor eax,eax

    endif



    Как сделать анологичное в Fasm
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
  3. ProgramMan

    ProgramMan New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2004
    Сообщения:
    263
    В макросе или при исполнении кода?

    для макроса

    if str='123'

    mov eax,0

    else

    xor eax,eax

    end if



    для кода смотри IF.INC
     
  4. Evg666

    Evg666 New Member

    Публикаций:
    0
    Регистрация:
    12 май 2004
    Сообщения:
    17
    Адрес:
    Russia
    Может кто не понял(а может и я) я хочу как нибудь указать что необходимо оптимизировать по размеру, или скорости

    пример с ТАСМ



    tasm test.asm /D_Size_



    macro o_mov a,b

    ifdef _Size_

    if b=0 then

    xor ebx,ebx

    endif

    else

    mov a,b

    endif

    endm



    Ты ошибки но я так чтоб смысл был понят.



    Asterix:

    За файлик спасибо.
     
  5. Evg666

    Evg666 New Member

    Публикаций:
    0
    Регистрация:
    12 май 2004
    Сообщения:
    17
    Адрес:
    Russia
    Прочитал fasm_precproc.chm и не нашел ответ на свой вопрос.
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Evg666

    В командной строке fasm'у это указать невозможно, но можно задать в самом исходнике некую константу, в зависимости от ее значения будет ассемблирован нужный код.
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Код (Text):
    1. DEBUG = 1
    2.  
    3. if DEBUG
    4.   invoke Message
    5.   ret
    6. else
    7.   ret
    8. end if
     
  8. Evg666

    Evg666 New Member

    Публикаций:
    0
    Регистрация:
    12 май 2004
    Сообщения:
    17
    Адрес:
    Russia
    Спасибо вполне разумный выход. Но параметры в командной строке Fasm не помешали бы.
     
  9. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Наоборот хорошо, что fasm'у можно все указать в исходнике, не городя трёхэтажную командную строку :derisive:
     
  10. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    >




    AFAIK Privalov никогда на это не пойдёт (IMHO правильно)



    Вообще, FASM имеет отличную (от других ассемблеров) идеологию.

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







    Вот ещё один из вариантов решения, без условной компиляции:
    Код (Text):
    1.  
    2.  
    3. macro  SIZE
    4. {
    5.      purge  zero
    6.      macro  zero arg
    7.      _%   xor  arg,arg   %_
    8. }
    9.  
    10. macro   SPEED
    11. {
    12.      purge  zero
    13.      macro  zero arg
    14.      _%   mov  arg,0   %_
    15. }
    16.  
    17. _% fix {
    18. %_ fix }
    19.  
    20.  
    21. ; используем
    22.  
    23. SPEED
    24.  
    25. zero eax
    26.  
    27. .......
    28.  
    29.  
    30. SIZE
    31.  
    32. zero ebx
     
  11. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Можно параметры задавать в отдельном include -

    это будет почти эквивалентно параметрам в командной строке.