Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 283
от 06.06.2002, 21:40

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 348
Отправлено ответов: 927
Активность: 266.3 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


 Список экспертов, ответы которых опубликованы в данном выпуске

Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 131.48
URL: Пристанище неодинокого программиста
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 140.57
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 162.83
[Подробней >>]
 
Beeblebrox
Статус: Опытный
Общий рейтинг: 130.31
URL: Beeblebrox / TMA HomePage
[Подробней >>]
DiGiT
Статус: Профессиональный
Общий рейтинг: 146.05
[Подробней >>]
Dron
Статус: Профессиональный
Общий рейтинг: 146.85
URL: Операционная система с нуля!
[Подробней >>]
 
AnSim
Статус: Доверительный
Общий рейтинг: 120.93
[Подробней >>]
igorash
Статус: Опытный
Общий рейтинг: 139.86
[Подробней >>]
kvINT
Статус: Начальный
Общий рейтинг: 110.48
[Подробней >>]
 
Александр
Статус: Опытный
Общий рейтинг: 119.47
[Подробней >>]
UFO
Статус: Опытный
Общий рейтинг: 121.95
[Подробней >>]
Dark_Lord
Статус: Доверительный
Общий рейтинг: 117.78
[Подробней >>]
 
kostik
Статус: Профессиональный
Общий рейтинг: 122.33
URL: Все о программистах и для программистов
Телефон: (4212)393-276
[Подробней >>]
Топор
Статус: Опытный
Общий рейтинг: 129.74
URL: Хорошая Русская Металлическая команда
Телефон: (8462)160302, 162918
[Подробней >>]
BlackBeast
Статус: Доверительный
Общий рейтинг: 104.19
[Подробней >>]
 
Gibbel
Статус: Доверительный
Общий рейтинг: 109.25
[Подробней >>]
Тorax
Статус: Доверительный
Общий рейтинг: 117.32
[Подробней >>]
Andy Bitoff
Статус: Опытный
Общий рейтинг: 117.51
URL: HomePage или что-то типа того :)
[Подробней >>]
 
vitya
Статус: Опытный
Общий рейтинг: 119.22
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 288. Здраствуйте, тов. эксперты Не могли бы ответить на вопрос, зачем нужно выравнивание. По границе слов... (ответов: 10)
Вопрос № 289. Вопросов сразу много накопилось: 1. У кого есть полная версия PowerASM32? 2. Мне очень нравится ког... (ответов: 4)
Вопрос № 290. На нашем предприятии существует компьютерная сеть. Сервер на базе Novell, машин в сети порядка ... (ответов: 3)
Вопрос № 291. ml.exe (masm 6.11) govorit chto ne mozhet naiti link.exe kogda assebliruyu *.com file link.exe pot... (ответов: 2)
Вопрос № 292. Здраствуйте эксперты! Эксперты помогите решить такую проблему (теоретически или теоро-алгоритмически... (ответов: 5)
Вопрос № 293. Доброго время суток, эксперты! Какую прогу посоветуете для редактирования .rc/.res файлов. Зы. NOTaP... (ответов: 10)
Вопрос № 294. Люди, подскажите, pls, где взять драйвер принтера на асме, нужно чтобы выводило BMP-шники. Спасибо.... (ответов: 3)

Вопросов: 7, ответов: 37


 Вопрос № 288

Здраствуйте, тов. эксперты
Не могли бы ответить на вопрос, зачем нужно выравнивание. По границе слова, двойного слова и т.д. Слышал, что это увеличивает скорость работы программ. Если это так, то почему?
Заранее спасибо



Вопрос отправлен: 02.06.2002, 06:52
Отправитель: Михаил

[Следующий вопрос >>] [Список вопросов]

Отвечает Артём Шегеда

Добрый день, Михаил!
На самом деле немножко не так, как ответил masquer.
Дело в том, что процессор (по крайней мере 386), выставляя адрес на шину данных, принимает сразу четыре байта по шине адреса. И если данные, имеющие размер 4 байта (dword), не выровнены на границу двойного слова, то процессор выполнит два обращения - а это затраты времени.
И эксперт masquer прав в том, что кэш с кодом, выровненным на границу параграфа, будет работать быстрее.
Это правило (повышении производительности) не выполняется для микроконтроллеров, работающих в байтном режиме обмена.

Ответ отправлен: 02.06.2002, 18:21
Отправитель: Артём Шегеда


Отвечает Ayl

Здравствуйте, Михаил!
Это действительно так и зависит от схемы работы процессора с шиной. Для 16-разрядных шин в случае, если слово считывается с четного адреса, то оно читается за 1 такт, а если с нечетного - то за 2. Двойное слово - аналогично, соответственно, за 2 и за 3 такта. Ну и т.п. Для 32-хразрядных - та же ситуация.

Ответ отправлен: 03.06.2002, 12:52
Отправитель: Ayl


Отвечает masquer

Приветствую Вас, Михаил!
Выравнивание уменьшает задержки (stalls), т.е. если данные или код не выровнены, то процессор, который может выполнять несколько инструкций одновременно будет работать "в холостую". Для данных выравнивание гарантирует их "правильное" попадание в кеш процессора, откуда они будут извлекаться гораздо быстрее.

Ответ отправлен: 02.06.2002, 09:03
Отправитель: masquer


Отвечает Beeblebrox

Доброе время суток, Михаил!
Так устроены интеловские процы, что если читать/писать невыравненные данные, то на выполнение команды уходят дополнительные циклы обращения к памяти.
Более того! Это чревато неприятной ситуацией нарушения границы, например, если у тебя di=0ffffh, то команда stosw вызовет зависание программы, чего не произошло бы, если б значение в di было четным.

Ответ отправлен: 03.06.2002, 10:50
Отправитель: Beeblebrox


Отвечает DiGiT

Добрый день, Михаил!
Вообще в интеловских процах самое оптимальное это выравнивание по граниче 16 байт. Это определяется наличем нескольких уровней кешей. Кстати в журнале "программист" есть стать об этом номер вроде 2 или 3 за этот год.

Ответ отправлен: 03.06.2002, 09:17
Отправитель: DiGiT


Отвечает Dron

Приветствую Вас, Михаил!
выборка памяти осуществляется по определенному количеству байт. на 286 проуессоре зa такт из памяти выбиралось по 2 байта (16 бит) на трешке по 4 байта. выше - там уже пошли всякие кеши, там сложнее. :)
короче если какой-то элемент данных попадает в два соседних двойных слова (ну типа два байта там, два байта тут. - элемент dd) то на его выборку из памяти уйдет два такта вместо одного. вот тебе потеря производительности.
а еще если у тебя каждая вторая команда обращается к этому невыровненному элементу...


Ответ отправлен: 03.06.2002, 11:44
Отправитель: Dron


Отвечает AnSim

Приветствую Вас, Михаил!
Ну это совсем просто - данные в компе передаются СЛОВАМИ.
Поэтому, если выровнять, компу не надо искать, где

Ответ отправлен: 03.06.2002, 17:17
Отправитель: AnSim


Отвечает igorash

Добрый день, Михаил!
Поищи статьи про оптимизацию программ там это все красиво рассмотрено.
На infocity.com.ua валяется одна от Р.Дункана, хоть и 10 лет ей уже, но все что там написано, можно использовать и сейчас.


Ответ отправлен: 04.06.2002, 11:52
Отправитель: igorash


Отвечает kvINT

Здравствуйте, Михаил!
Например, цепочечные команды (movs, cmps etc.) позволяют быстро производить разл. действия с байтами, словами, двойными словами. Представь, что поочередно выбираются слова, а у тебя там то байт, то слово. Все смешается в доме Обломских.

Ответ отправлен: 05.06.2002, 21:41
Отправитель: kvINT


Отвечает Александр

Приветствую Вас, Михаил!
Ну как тебе объяснить. Есть такое понятие, кэш-памятью зовётся. Так вот при использовании выравнивания на длину кратную длине строки кэш памяти всё происходит гораздо быстрее. К тому же при выравнивании по границе кратной 4 байтам происходит более эффектифное считывание из модулей памяти. Тоже построчное. В журнале Программист(programme.ru) №1_2002 и №2_2002 про кэш-память и оптимизацию данных была статья Криса Касперски. Хорошая. В №3_2002 логически из этих двух статей вытекающая, про оптимальное копирование данных.


Ответ отправлен: 04.06.2002, 13:40
Отправитель: Александр


 Вопрос № 289

Вопросов сразу много накопилось:
1. У кого есть полная версия PowerASM32?
2. Мне очень нравится когда в рассылке проходят какие-то конкурсы, дак вот, предлагаю написать не самую короткую, а самую быструю программу для вывода линии на экран (алгоритм), за основу использовать режим VESA 640х480х32, тестироваться будет по принципу 1000 хаотичных линий на время выполнения.
3. И еще по поводу ОСьки, все есть, надо только графику, а вообще надо собраться, пива попить, и всем миром сообразить. Предлагаю сделать это в Новосибирске, надеюсь меня поддержат.



Вопрос отправлен: 02.06.2002, 09:49
Отправитель: AllAddIn (AllAddIn@Ngs.Ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Здравствуйте, AllAddIn!
1. Это еще что за зверь?
2. Не интересно под ДОС что-то выдумывать.
3. Пиво это хорошо, Новосибирск далековато от юга Украины.

Ответ отправлен: 02.06.2002, 14:08
Отправитель: masquer


Отвечает Beeblebrox

Доброе время суток, AllAddIn!
2.Самый быстрый алгоритм вывода отрезка на экран уже давно написан, это так называемый DDA (Digital Difference Algorithm), он значительно быстрее (и короче, кстати) Брезенхема.
Описание желающие найдут на http://www.enlight.ru
3.Пива попить я и в Харькове могу, а написание ОС - занятие для энтузиастов, имеющее практическую ценность только для них самих (в смысле самообучения и практики)

Ответ отправлен: 03.06.2002, 11:06
Отправитель: Beeblebrox


Отвечает Dron

Добрый день, AllAddIn!
По поводу тестирования... :)
100 хаотичных линий могут потребовать разного времени выполнения. :)
так что хаотичные линии должны быть заранее определены и одинаковы для всех.
А по поводу алгоритма - быстрее как его, Безенхейма чтоли?, еще вроде никто не придумал.


Ответ отправлен: 03.06.2002, 11:46
Отправитель: Dron


Отвечает Александр

Здравствуйте, AllAddIn!
1. А те мил человек точно Power Assembler нужен. Ты лучше посмотри какие у меня Visual Assembler, Archimedes IDE, Programmers IDE 2000.
2. А я даже париться с самой быстрой линией не буду, сопру у Майкла Абраша(Michael Abrash) Таинства программирования графики(Zen of graphics programming).
3. Рационализаторское предложение. Страна Советов более широкая, чем высокая(если рассматривать карту), поэтому выгоднее встречаться на северном полюсе. Никому не будет обидно.


Ответ отправлен: 04.06.2002, 13:41
Отправитель: Александр


 Вопрос № 290

На нашем предприятии существует компьютерная сеть. Сервер на базе Novell, машин в сети порядка 40. Работаем с базой данных, в которой около полумиллиона записей, СУБД мало кому известна, но достаточно шустрая. Однако, есть желание сменить программное обеспечение. Вот, собственно, что интересно:
1) Какая СУБД на сегодняшний день считается наиболее надёжной и шустрой (Oracle, MySQL...)?
2) Какой сервер для этого нужен (Unix, WinNT, Linux, Novell...)?
3) Посоветуйте, что наиболее рационально в соотношении цена-качество, исходя из п.1,2.
В дополнение можно заметить, что компьютеры "разношёрстные"- от 386 до П-4, и в будущем, возможно, потребуется сеть между достаточно удалёнными машинами (порядка 100 км).



Вопрос отправлен: 02.06.2002, 10:22
Отправитель: Алексей (developer@galexv.hut.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает UFO

Приветствую Вас,Ничего не меняй!
Будет большая_задница

Ответ отправлен: 02.06.2002, 18:01
Отправитель: UFO


Отвечает DiGiT

Здравствуйте, Алексей!
1) Оракл мощная, но не настолько гибкая как MYSQL.(Все определаятся количеством баз данных)
2) Я думаю UNIX,а Novell отпадает только потому. что это специализированная сетевая ось. Винды я думаю знаешь почему.
Если такие тачки слабые, то я думаю Только Юникс(Например Фря)


Ответ отправлен: 03.06.2002, 09:11
Отправитель: DiGiT


Отвечает Александр

Доброе время суток, Алексей!
1) Оракл - ОЧЕНЬ дорого надёжно и МЕДЛЕННО.
MySQL - Бесплатно, быстро, многого не умеет, хотя постоянно развивается
Centura SQL - приемлемая цена, надёжно, но очень запутанное администрирование.
Я не претендую на роль эксперта, просто впечатления от работы со всеми тремя.
2) Все 3 работают под виндой. MySQL работает под всеми Unix - системами.
3) Ну насчёт цены/качества я не советчик, вы тут кажется критерий качества не задали. Надо выбирать под потребности. Если не требуется использование SQL-изысков, реализованных только в последних версиях Oracle и MS SQL Server, то идеальной становится MySQL. Работу сильно разбросанной системы я наблюдал только под Centura SQL. В системе, которую я наблюдал был центральный сервер и несколько локальных. Обмен данными происходил во время фиксированных сессий по модему, примерно раз в 20-30 минут. Соответственно филиалы получали каждый свою информацию, а сервер получал обновления и дополнения из филиалов. Причём количество обрабатываемых записей было около 50000 на локальный сервер и 500000 на центральный.
P.S. В следующий раз пиши либо в поиск информации, либо в администрирование Windows или Linux. А так оффтопик получается.


Ответ отправлен: 04.06.2002, 13:42
Отправитель: Александр


 Вопрос № 291

ml.exe (masm 6.11)
govorit chto ne mozhet naiti link.exe kogda assebliruyu *.com file
link.exe poteryalsya ? ? ?



Вопрос отправлен: 02.06.2002, 12:14
Отправитель: Nick

[Следующий вопрос >>] [Список вопросов]

Отвечает AnSim

Добрый день, Nick!
Поаккуратнее с путями...

Ответ отправлен: 03.06.2002, 17:19
Отправитель: AnSim


Отвечает igorash

Добрый день, Nick!
Nu eto ne mne vopros, a samomu sebe - ya je ne mogu uvideti chto na tvoiem vinte tvoritsya.
Poischi ego, mojet naideshi


Ответ отправлен: 04.06.2002, 11:50
Отправитель: igorash


 Вопрос № 292

Здраствуйте эксперты!
Эксперты помогите решить такую проблему (теоретически или теоро-алгоритмически:)).
Как написать собственный язык программирования для программы (которая в этом нуждается).
И еше, теоретически как разобрать синтаксис. К примеру:
X+Y=Z.
P.S. Удачи...!




Вопрос отправлен: 02.06.2002, 15:54
Отправитель: kuper

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Добрый день, kuper!
Достаточно сложная проблема в общем случае. Поищи в поисковиках по слову translate, compile. Я слышал про программу, которая добавляет к другой программе скриптовый язык типа VBA. Названия не помню.

Ответ отправлен: 02.06.2002, 17:02
Отправитель: masquer


Отвечает Dark_Lord

Добрый день, kuper!
На счёт языка, писать руками, а на счёт А+В=С, то это можно записать в 5 булеанов и переменных 1=true 1(2)=А, 2=false 2(2)=1(плюс) 3=true 3(2)=B 4=false 4(2)=5(равно) 5=true 5(2)=C

Ответ отправлен: 02.06.2002, 16:50
Отправитель: Dark_Lord


Отвечает DiGiT

Добрый день, kuper!
Синтакс разбирай или рекурсивно(вроде просто реализуется, я сам такое делал), либо приводи к обратной польской записи и там такие записи обрабатываются достаточно просто.
Для написания своего языка сначала разберись с терией формальных грамматик. :)))

Ответ отправлен: 03.06.2002, 09:08
Отправитель: DiGiT


Отвечает Dron

Приветствую Вас, kuper!
Как ты собираешься анализировать X + Y = Z с точки зрения компьютера? или Z - это место куда нужно записать результат? почему тогда не слева?
по поводу разбора - сходи на www.softcraft.ru
там много про компиляторы написано.

Ответ отправлен: 03.06.2002, 11:49
Отправитель: Dron


Отвечает kostik

Добрый день, kuper!
Об этом написано много книг и сайтов.
Советую прогуляться о адресам
http://www.softcraft.ru
http://algolang.da.ru


Ответ отправлен: 06.06.2002, 14:06
Отправитель: kostik


 Вопрос № 293

Доброго время суток, эксперты!
Какую прогу посоветуете для редактирования .rc/.res файлов.
Зы. NOTaPAD не предлагать;) с ним я сейчас работаю!



Вопрос отправлен: 02.06.2002, 16:51
Отправитель: Dark_Lord

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Здравствуйте, Dark_Lord!
Я пользуюсь редактором из Visual Studio, а потом ручками почищаю. А вообще, по-моему, Ресторатором можно, да куча их.

Ответ отправлен: 02.06.2002, 18:01
Отправитель: masquer


Отвечает Топор

Приветствую Вас, Dark_Lord!
Я пользую встроенный редактор ресурсов в Borland C++ 5.02, иногда - Resource Workshop 4.5


Ответ отправлен: 04.06.2002, 06:41
Отправитель: Топор


Отвечает BlackBeast

Добрый день, Dark_Lord!
Я использую WEdit. Можно еще Resource Builder и у Borland че-то там есть. Посмотри на www.protools.cjb.net там много всякого добра.


Ответ отправлен: 03.06.2002, 22:42
Отправитель: BlackBeast


Отвечает Gibbel

Доброе время суток, Dark_Lord!
Хватай Borland C 5.02 - мне его редактор наиболее приятен.


Ответ отправлен: 03.06.2002, 11:16
Отправитель: Gibbel


Отвечает Тorax

Приветствую Вас, Dark_Lord!
Вместе с Дельфи и Си++ Буилдер идет редактор ресурсов, вот ими и пользуйся. Вообще-то таких прог немеряно в Инете.
Torax


Ответ отправлен: 02.06.2002, 21:26
Отправитель: Тorax


Отвечает Andy Bitoff

Приветствую Вас, Dark_Lord!
Поставь Borland C++ 5.02 и не мучайся.

Ответ отправлен: 02.06.2002, 22:09
Отправитель: Andy Bitoff


Отвечает DiGiT

Добрый день, Dark_Lord!
Я есть специальные редакторы ресурсов, например в Визуал студио, в борланде есть.

Ответ отправлен: 03.06.2002, 09:06
Отправитель: DiGiT


Отвечает vitya

Здравствуйте, Dark_Lord!
попробуй редактор VStudio или Borland - овские.
В VS надо открывать файлы, но внизу, где Open As, надобно выбрать Resources. Тогда все откроется как следует.


Ответ отправлен: 03.06.2002, 09:14
Отправитель: vitya


Отвечает igorash

Доброе время суток, Dark_Lord!
Есть brcc в комплекте с Borland Pascal.
Есть еще целая куча.
Поищи в инете, найдешь ее.


Ответ отправлен: 04.06.2002, 11:48
Отправитель: igorash


Отвечает kostik

Добрый день, Dark_Lord!
В составе Visual Studio есть такой редактор.
Но вот лучше всех - Resourse Workshop. Он идет в составе даже с Borland C++ 3.0. Не говоря, уже о более современных продуктах.


Ответ отправлен: 06.06.2002, 14:09
Отправитель: kostik


 Вопрос № 294

Люди, подскажите, pls, где взять драйвер принтера на асме, нужно чтобы выводило BMP-шники.
Спасибо.



Вопрос отправлен: 02.06.2002, 21:09
Отправитель: Burney (burney@toba.com)

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Доброе время суток, Burney!
Указывай, под какую ось тебе это нужно. Если под винды, то драйвер тебе не нужен.

Ответ отправлен: 03.06.2002, 08:28
Отправитель: masquer


Отвечает Артём Шегеда

Доброе время суток, Burney!
Маленькое лирическое отступление.
Функция печати содержимого экрана на принтере зашита в BIOS. Но её беда в том, что она не выводит содержимого экрана в графических режимах. Поэтому операционные системы должны сами реализовывать подобные функции.
В Windows GDI это родное - работа с графикой. Сложнее с MS-DOS. В MS-DOS 6.22 была такая программа - graphics.com. Это резидент, который перехватывал прерывание вывода на принтер содержимого экрана. Поищи дистрибутив MS-DOS. В крайнем случае - задавай вопрос о написании подобной программы: здесь расскажут как печатать графику, как печатать фрагмент экрана, как масштабировать и многое другое и всё это в 3 КБайта кода...

Ответ отправлен: 03.06.2002, 11:47
Отправитель: Артём Шегеда


Отвечает Александр

Добрый день, Burney!
Ты уже умер или только тренируешься? Вопрос задавать надо подробнее. Для какого принтера, какой операционной системы. В windows не парься, а открывай картинку в Paint и говори Печать. Если в Дос, то там есть такая программа print.exe для поддержки вывода на печать содержимого экрана, даже в графическом режиме. Так что берёшь просмотровщик под ДОС, открываешь картинку на весь экран и жми PrintScreen. print.exe настраивается на одну из нескольких ему известных систем команд принтеров IBM или Epson. Про HP ничего не помню. Если тебе нужны команды принтера, то к моему Epson LQ-100+ они были в приложении руководства.


Ответ отправлен: 04.06.2002, 13:43
Отправитель: Александр



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (49)
C / C++ (29)
Perl (10)
Delphi (17)
Pascal (28)
Basic / VBA (14)
Java / JavaScript (8)
PHP (8)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (49)
Windows NT/2000/XP (35)
"Железо" (40)
Поиск информации (21)
Администратору
Windows NT/2000/XP (15)
Linux / Unix (9)
Юристу
Гражданское право (13)
Семейное право (5)
Трудовое право (7)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное