· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Вопрос к Four-F касательно строковых макросов.

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Апр 25, 2004 19:05:00

Four-F
Я не большой специалист в макросах, особенно касательно логики
работы не мной написанных, хотел спросить у тебя про макрос $CTA0,
если я с его помощью задаю одну и ту же строку в разных функциях,
то сколько раз попадёт эта строка в файл, столько сколько задавал
или один раз?
Я мог бы конечно провести эксперимент но решил всё же спросить.


Дата: Апр 25, 2004 21:53:03

Эксперимент показал что несколько раз, это плохо.


Дата: Апр 25, 2004 22:01:22

Сколько $CTA0, столько и строк. А иначе придется создавать какую-то глобальную таблицу и отслеживать уже присутствующие там строки. А это такой геморрой... если вообще возможно макросредствами. Так что ручками :)


Дата: Апр 26, 2004 00:06:19

А кстати, как с таким определением строк обстоят дела в C, там тоже несколько раз попадет?


Дата: Апр 26, 2004 00:54:14

Asterix
Компилятор C обязан оптимизировать код :-) В случае с VC++, повтора не будет, если строки являются константами в понимании компилятора.


Дата: Апр 26, 2004 01:09:17

Понял :-) У С компилятора логика правильная ;-)


Дата: Апр 26, 2004 04:30:33 · Поправил: q_q

Quantum
Компилятор C обязан оптимизировать код
imho правильный компилятор предоставляет выбор программисту. В случае с VC++ за объединение одинаковых строк отвечает ключ /Gf или /GF. Соответствующий флажок есть в опциях настройки проекта в интегрированной среде.


Дата: Апр 26, 2004 05:47:56 · Поправил: Quantum

q_q
Согласен. Выражусь иначе: "Компилятор C обязан уметь оптимизировать код" и уберу смайлик.


Дата: Апр 26, 2004 12:44:17

[ Asterix : сколько раз попадёт эта строка в файл, столько сколько задавал или один раз? ]

Это уже сделано для FASM.
Посмотри описание макроса .sz ;-)


Дата: Апр 26, 2004 17:54:26

S_T_A_S_
И где его смотреть?


Дата: Апр 26, 2004 18:08:17

Asterix
Дык файл "readme.ru" - тама описание всех моих макросов


Дата: Апр 26, 2004 18:12:01

Ну так бы сразу и сказал что макрос твой ;-)


Дата: Апр 26, 2004 23:10:08

S_T_A_S_
Кста, а как макрос то юзать, у тебя что-то примера не нашёл?
А можно что-нить для masm'а замутить похожее?


Дата: Апр 27, 2004 01:20:40

По поводу MASM я не знаю, можно ли там это реализовать - макросы там я толком и не понял :/
Примеры я уже начинаю делать наверное раз пятый ;). Но постоянно появляются идеи все переделать по-новой :)

Если отдельно использовать - надо взять все макросы, начинающиеся с .sz из \#Inc\data.inc.
Юзается примерно так:
.sz  caption,'some caption', text,'some text'
invoke MessageBox 0,text, caption,0
.......
invoke MessageBox 0,text2, caption2,0
.sz  caption2,'some caption'
.sz  text2,'some text'
.......

;;  Это помещает все строки кучей (где-то в конце поместить)
.sz.include  ..sz


А если подключать PE.inc, то вот это сразу компилировать можно:
include '..\PE.inc'

usedll	user32

entry

invoke	MessageBox,0,'thank you','terminated',0
invoke	MessageBox,0,'thank you','terminated',0
invoke	MessageBox,0,'thank you','terminated',0
invoke	MessageBox,0,'thank you','terminated',0
invoke	MessageBox,0,'thank you','terminated',0

invoke	ExitProcess, 0

.end


Дата: Апр 27, 2004 01:37:55

.sz caption,'some caption', text,'some text'
invoke MessageBox 0,text, caption,0


Не, мне что-то так не нравится :-(

invoke MessageBox,0,'thank you','terminated',0
invoke MessageBox,0,'thank you','terminated',0


Вот так было бы в самый раз, если бы все эти строки помещались по разу, каламбур однако :-)

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.170