fasm и символьные переменные в инклюдах

Тема в разделе "WASM.BEGINNERS", создана пользователем common_up, 22 май 2011.

  1. common_up

    common_up New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    85
    Вчера задумался и понял, что надоело в инклюдах видеть:
    db dd dq, rb и т.д.
    Так или иначе берутся со студии хидеры и перерабатываются. Смотрится размер того же HANDLE или TCHAR и потом проставляются dd db dw и т.д.
    Кто-то пробывал от этого уходить, в сторону символьных переменных ? Если да, то коим образом ? Да и вообще хотелось бы слышать Ваше мнение относительно того, целесообразно это или нет
     
  2. rmka

    rmka Member

    Публикаций:
    0
    Регистрация:
    22 окт 2010
    Сообщения:
    108
    Код (Text):
    1. macro HANDLE var {var dd ?}
    Так что ли?
     
  3. CHESTER

    CHESTER New Member

    Публикаций:
    0
    Регистрация:
    8 май 2011
    Сообщения:
    7
    Кто - то поделиться набором структур для fasm\nasm ddk/Win32 Api ?
     
  4. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Можно также через директиву EQU.
    Создаём файл WinApiTypes.Inc:
    Код (Text):
    1. if TCHAR_SIZE=1
    2.     TCHARS  equ rb
    3. endif
    4.  
    5. if TCHAR_SIZE=2
    6.     TCHARS  equ rw
    7. endif
    8.  
    9. OBJREF  equ dd
    10. HBITMAP equ dd
    11. PTCHAR  equ dd
    12.  
    13. ; ... and so on ...
    И далее пользуем ():
    Код (Text):
    1. ;
    2. ; Comment out one of these
    3. ;
    4. TCHAR_SIZE=2  ; UNICODE
    5. TCHAR_SIZE=1  ; ANSI
    6.  
    7. include 'WinApiTypes.Inc'
    8.  
    9. ...
    10.  
    11. virtual at 0
    12. TApplication:
    13.     .Path   TCHARS      MAX_PATH
    14.     .Bitmap HBITMAP     ?
    15.     .Object OBJREF      ?
    16.     .size = $
    17. end virtual
     
  5. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Вообще, по-моему, правильнее в fasm определять свои типы с помощью struc:
    Код (Text):
    1. struc HANDLE [value] {
    2. common
    3.         . dd value
    4. }
    5. ...
    6. hWnd HANDLE ?
    7. hWndArray HANDLE 10 dup (?)
     
  6. johnfound

    johnfound New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2003
    Сообщения:
    74
    Адрес:
    Bulgaria
    Зачем умножать сущностей? HANDLE, (как и многие другие) и есть двойное слово. FASM тем и хорош, что называет вещи собственными именами. Это делает программа лучше и понятнее.
    А если реальность так надоела, всегда можно переходить на C.
     
  7. edemko

    edemko New Member

    Публикаций:
    0
    Регистрация:
    25 ноя 2009
    Сообщения:
    454
    Сущий TypeCast - мое большое разочарование.
     
  8. common_up

    common_up New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    85
    Сущий или не сущий, а переработка хидеров - отдельная тематика в асм кодинге, согласись.