Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2016, 02:03   #1
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию Определение разрядности приложения в MASM

В TASM есть символ @32Bit, в MASM/MASM32 он отсутствует. Что вместо него можно использовать? Как определить разрядность (16/32/64 бита)?
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 22.12.2016, 11:56   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

7in,
ну и задачу ты задал, никогда не пользовался,
1) по модели памяти понятно, что tiny, Compact, Small, Medium, Large, Huge -- это 16-разрядная программа
flat -- 32-разрядная
2) При описании сегмента используют use16 use32
Код:
seg1 segment para public use16 'data'
...
seg1 ends
3) лучше всего прочитать заголовок EXE если по смещению указанному в 3Ch "PE" 32/64
Mikl___ вне форума Ответить с цитированием
Старый 22.12.2016, 13:18   #3
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

EXE не подойдёт. И use16/use32 тоже. Нужно понять в процессе компиляции через if/ifdef, чтобы понимать какие ресурсы (регистры и пр) использовать (для INCLUDE). Просто проверка поддержки 386 не пойдёт (@Cpu and 4).
По модели - вариант, спасибо. Но сначала нужно проверить, что это MASM, т.к. в TASM числа другие (@Model выдаёт одно и то же на Tiny и Flat):
Код:
ifdef		@Version		; MASM
  @32Bit	=	(@Model eq 7)	; Flat memory model
endif
или
Код:
ifndef	??Version		; not TASM
  @32Bit	=	(@Model eq 7)	; Flat memory model
endif
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 22.12.2016, 14:14   #4
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

7in,
я же написал -- необычная задача. Нужно попробовать @32Bit вроде у masm и tasm большая совместимость, хотя о @32Bit я в документации не нашел, но вдруг сработает напиши на wasm.in вдруг кто-то с этим сталкивался
Mikl___ вне форума Ответить с цитированием
Старый 24.12.2016, 21:15   #5
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Всё даже проще: @WordSize
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение активности приложения и совершаются ли в нём действия. dima1257 C# (си шарп) 2 03.06.2014 07:57
Определение разрядности (битности) программы. phphel Общие вопросы Delphi 9 26.08.2011 02:19
Определение разрядности Windows Alter Windows 7 24.06.2010 23:29
MASM, определить хендл другого приложения ассемблер123 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 20.04.2010 14:46