Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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



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

В TASM есть символ @32Bit, в MASM/MASM32 он отсутствует. Что вместо него можно использовать? Как определить разрядность (16/32/64 бита)?
7in вне форума   Ответить с цитированием
Старый 22.12.2016, 12:56   #2
Mikl___
Профессионал
 
Регистрация: 11.01.2010
Сообщений: 1,068
Репутация: 855
По умолчанию

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, 14:18   #3
7in
(aka Jin X)
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Адрес: Самара
Сообщений: 148
Репутация: 64
По умолчанию

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

7in вне форума   Ответить с цитированием
Старый 22.12.2016, 15:14   #4
Mikl___
Профессионал
 
Регистрация: 11.01.2010
Сообщений: 1,068
Репутация: 855
По умолчанию

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

Всё даже проще: @WordSize
7in вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение активности приложения и совершаются ли в нём действия. 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 1 20.04.2010 14:46




10:25.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
таргетированный трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru