Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 633
от 04.09.2003, 11:40
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 4083 Отправлено ответов: 12095 Активность: 296.2 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 148.64 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 152.3 URL: Программирование [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 107.33 URL: Savage Metal Club - жизнь в стиле рок-н-ролл Телефон: +7 901 710 3146 [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 121.68 [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 113.07 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 134.15 [Подробней >>] |
Илья Статус: Опытный Общий рейтинг: 102.83 [Подробней >>] |
Greys Статус: Доверительный Общий рейтинг: 121.63 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 120.71 URL: мой сайт [Подробней >>] |
Beeblebrox Статус: Профессиональный Общий рейтинг: 107.33 URL: Beeblebrox / TMA HomePage [Подробней >>] |
Andrew Vext Статус: Профессиональный Общий рейтинг: 105.05 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 117.77 [Подробней >>] |
Igoryk Статус: Профессиональный Общий рейтинг: 110.67 URL: CodeClimber.Com [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 4047. Здраствуйте!!! Раскажите мне, пожалуйста немного про программирование паралельного порта под Винду и... (ответов: 1)
Вопрос № 4049. Здравствуйте! Может, вопрос и не по ASM-у? Никак не получалось загрузить Windows Media Player 9. Про... (ответов: 1)
Вопрос № 4050. Здравствуйте, уважаемые эксперты! Я решил ДЕТАЛЬНО ознакомиться с управлением т.н. Windows-controls ... (ответов: 1)
Вопрос № 4052. Здравствуйте, Эксперты. К вопросу №4043. Я и правда забыл вставить приложение, за что и извиняюсь. Н... (ответов: 2)
Вопрос № 4054. Здравствуйте! Что означают верхняя и нижняя линия сканирования у курсора ... (ответов: 2)
Вопрос № 4055. Доброго время суток! 1. Проверте пожалуста правильно ли я задаю лимит и базу дескриптора GDT 2. Прав... (ответов: 1)
Вопрос № 4056. Здравствуйте, господа Эксперты. Мне нужна ваша помощь. Есть диалоговое окно содержащее помимо кнопок... (ответов: 2)
Вопрос № 4057. Здравствуйте, эксперты ! Как трассировать чужие dll-ки. Определить их состав. Dll оформлена в виде C... (ответов: 2)
Вопрос № 4058. Здравствуйте, подскажите, пожалуйста, как можно изменить громкость - ту, которая изменяется общим ре... (ответов: 2)
Вопрос № 4059. Вот раньше был сайт www.assembler.ru/ Так это был достаточно мощный сайт про Ассемблер! Сейчас же та... (ответов: 2)
Вопрос № 4060. Доброго времени суток, уважаемые эксперты :))) У маэстро Зубкова в одной из программ-примеров для... (ответов: 8)
Вопрос № 4061. Здравствуйте, Эксперты. Это снова я и у меня опять пара вопросов. Вопрос №1. При создании окна указы... (ответов: 4)
Вопросов: 12, ответов: 28
Вопрос № 4047 |
Здраствуйте!!!
Раскажите мне, пожалуйста немного про программирование паралельного порта под Винду и Юникс. Если есть какие ссылки, милости прошу. А те материалы, которые есть на руках скиньте, пожалуйста на мыло.
И если на ноге порта выставлена логическая единица, то какое напряжение там будет (5, 12 и т.д.)
Спасибо!!!
Вопрос отправлен: 30.08.2003, 02:49
Отправитель: Torax (torax@dotes.west.energy.gov.ua)
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Доброе время суток, Torax!
Логическая единица в TTL-уровнях. Вроде 4.87 В.
Ответ отправлен: 30.08.2003, 09:52
Отправитель: Евгений Иванов
Вопрос № 4049 |
Здравствуйте! Может, вопрос и не по ASM-у?
Никак не получалось загрузить Windows Media Player 9. Программа установки ругается (по-Microsoft-овски), что ей нужен Windows 98 SE, а у меня 98 SE русский (4.2222).
Архивариусом этоот пакет открывается, есть inf-файлы, только это всё нужно записать по нужным адресам, и в реестр.
Спасибо за рубрику.
Вопрос отправлен: 30.08.2003, 11:23
Отправитель: Ефимов Андрей (efimovspb@narod.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает --- Нет данных ---
Добрый день, Ефимов Андрей!
Это тебе в раздел юзеров надо!Причем тут асм?
Ответ отправлен: 30.08.2003, 11:59
Отправитель: --- Нет данных ---
Вопрос № 4050 |
Здравствуйте, уважаемые эксперты!
Я решил ДЕТАЛЬНО ознакомиться с управлением т.н. Windows-controls (включая: common controls). В данный момент, меня занимает: TabControl.
Я перерыл кучу статей и книг по этой теме, но везде сталкивался с поверхностным подходом (не исключение здесь и, хвалимая многими и мной в том числе, книга Зубкова С.В. 'ASSEMBLER для DOS, Windows и UNIX') к интересующим меня вопросам. Меня ДЕТАЛЬНО интересует следующее:
1. Описание ВСЕХ сообщений и их параметров, которые я могу послать TabControl'у, а также их возвращаемых значений. Как Вы конечно же знаете, список этих сообщений можно найти в файле WINDOWS.inc. Все они начинаются, так: TCM_. Если есть еще какие ни будь сообщения, связанные с TabControl'ами, кроме этих, то они тоже интересуют меня.
2. Описание ВСЕХ сообщений (или событий) и их параметров, которые TabControl посылает в мою оконную процедуру, а также их возвращаемых значений. Как Вы конечно же знаете, список этих сообщений можно найти в файле WINDOWS.inc. Все они начинаются, так: TCN_. Они передаются как подсообщения сообщения: WM_NOTIFY. Если есть еще какие ни будь сообщения, связанные с TabControl'ами, кроме этих, то они тоже интересуют меня.
3. Описание ВСЕХ элементов, структур: TC_ITEM и NMHDR, и их возможных значений. Как Вы конечно же знаете, определение этих структур можно найти в файле WINDOWS.inc. Если есть еще какие ни будь структуры, связанные с TabControl'ами, кроме этих, то они тоже интересуют меня.
Так вот, если кто-то из вас может дать мне подробную инфу по данному вопросу или ссылку на нее (инфа должна подходить для русифицированной Windows 2000 Pro SP3 или SP4), то сделайте это, пожалуста!!! Буду очень вам благодарен! Желательно, чтобы инфа была на русском языке (хотя я, конечно же, не откажусь и от англоязычной). Большая просьба: не ссылайтесь на MSDN, т.к. у меня ее нет, в продаже я ее, у нас в городе, я не видел, а работать с ней в ON-LINE я не имею возможности. При изучении программирования под Windows, я пользуюсь различными API-Helper'ами, книгами и прочей доступной мне инфой.
Ну, с этим пока все. Теперь перейду к другой теме, которая интересует меня исключительно в плане расширения кругозора. Тема: Функционирование КЭШа и кэширование памяти. Она не относится на прямую к теме данной рассылки, но близко связанна с ней. Некоторые из вас обещали постараться помочь мне разгрызть этот орешек, за что им БОЛЬШОЕ СПАСИБО!!!
Я, к большому сожалению, прочитал только две довольно устаревшие книги где рассматривались вопросы связанные с этой темой. Это книги Михаила Гука: 'Энциклопедия: Аппаратные средства IBM PC' и 'Процессоры: Pentium II, Pentium Pro и просто Pentium'. Сразу извенюсь за то, что вопросы могут быть ламерские!
Я не инженер-схемотехник, не дипломированный программист (хотя и работал на этой должности) и даже не студент... Хотя занимаюсь программированием на ассемблере уже довольно давно (начал я с кодинга для ZX-Spectrum48-совместимой машины еще в ТЕ времена). Я интересуюсь этим просто потому, что мне ИНТЕРЕСНО!!! Ну ладно, с отмазками вроде все... Перейду к вопросам:
1. Возьмем к примеру прцессоры: Pentium III (Coppermine)
и Athlon (Thundenbird). Насколько мне известно, в процессоре Pentium III КЭШ второго уровня является инклюзивным, т.е. в нем, в любой момент времени, дублируются данные из КЭШа первого уровня, а у Athlon'a - эксклюзивным, т.е. в его КЭШе второго уровня не дублируются данные из КЭШа первого уровня. Получается, что у Athlon'a эффективный размер КЭШа составляет 384Kb (128Kb + 256Kb), а у Pentium'а III всего 256Kb (вместо возможных: 288Kb(32Kb + 256Kb)). Вопрос: что дает Pentium'у III инклюзивность его КЭШа, т.е. зачем это сделано?! Мне не хочется думать, что его разработчики выкинули коту под хвост целых 32Kb, из итак по сути: мизерного, объема ценной памяти.
2. Насколько мне известно, у процессора Pentium III (Coppermine) КЭШ второго уровня работает на частоте ядра процессора, т.е. КЭШи первого и второго уровня работают на одной частоте. Далее, насколько мне известно (но, тут я могу ошибаться), оба они являются четырех канальными наборно-ассоциативными (если я тут ошибаюсь, то данный вопрос отпадет сам собой). Единственное их отличие в том, что КЭШ первого уровня функционирует по т.н. Гарвардской архитектуре, т.е. он делится на две половины по 16Kb, код и данные хранятся в нем раздельно, каждое в своей половине. Мне кажется что это не физическое разделение а скорее логическое, т.е. так его воспринимает логика процессора.
Вопрос: если верно все вышесказанное, то почему бы не объединить оба КЭШа в один?! Я не вижу, в таких условиях, смысла в многоуровневом кэшировании. Или он все же есть? Если он есть, то в чем он заключается? Объясните мне, пожалуйста! Может быть дело тут в аппаратном ограничении размера КЭШа первого уровня в 32Kb или в том, что у разработчиков не было времени на это объединение (ведь, в таком случае, пришлось бы перестраивать логику процессора, связанную с процессом кэширования)?
3. В чем заключается смысл создания многоуровневого КЭШа? В принципе у меня есть свое мнение по этому вопросу. Я считаю, что это связанно со стремлением удешевить готовую продукцию, на фоне повышения общей производительности, т.е. некий компромисс между ценой и производительностью. Но мне хотелось бы, чтобы высказали свое мнение люди которые лучше меня ориентируются в этой области.
Конечно, я понимаю что эти вопросы было бы уместней задать разработчикам. Но, к сожалению, я не владею английским языком в нужном объеме. Я задаю их просто в надежде, что кто ни будь сможет на них ответить.
Ну все, я думаю что для одного раза этих вопросов будет достаточно. Заранее благодарю за ваши ответы.
P.S.: Забыл сказать! Ребята я обратил внимание на то, что у некоторых из вас (да и не только у вас) бытует такая практика: если человек где то не совсем четко сформулировал вводные данные или вопрос, то одни начинают уточнять опущенные моменты, а другие и вовсе отказываются отвечать на такие вопросы. Я предлагаю вам изменить такой подход к делу (там где это возможно) на следующий: вы отвечаете на поставленный вопрос так, как его поняли. Если в водных данных или вопросе есть пробелы (т.е. места нуждающиеся в уточнении), то вы могли бы сами за них что ни будь додумать (главное, чтобы вопрос получился максимально сложным), а в ответе прямо указать на это. В этом случае в рассылке появится больше полезной информации, а задавший вопрос человек увидев ваш ответ сам поймет, что ему нужно уточнить. Главное: не считайте человека, который задал вопрос – ламером по умолчанию (где же презумпция невиновности?). Отвечайте ему по полной программе, если он не поймет ответа, то это его проблемы (в крайнем случае, в следующем письме он уточнит: что ему нужно). Не забывайте, что по мимо него ваш ответ прочитает еще куча народу и кому то он может пригодиться!!! А Вы сможете блеснуть своим профессионализмом. А так же, не забывайте, что большинство вашей аудитории составляют все таки не ламеры. IMHO ламеры тусуются в большинстве своем на рассылках по Visual Basic’у и Delphi. Поэтому, надо давать ламерских ответов! Я конечно вижу что многие из вас так и поступают, но все же не все (не буду пальцем показывать, чтобы не обидеть!). Хотелось бы, чтобы это стало общепринятой практикой на этой рассылке. И тогда всем будет хорошо!!!
Вопрос отправлен: 30.08.2003, 11:24
Отправитель: Олег (Oleg_SK@e-mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, Олег!
Ну ты и написал :)
1. По поводу Tab Control - ищи MSDN по любому, т.к. это наиболее полный справочник разработчика! Еще посмотри Win 32 Dev Ref, которое идет в составе с Borland Delphi или Builder - там значительно меньше, значительно хуже, но все же есть.
> в продаже я ее, у нас в городе, я не видел
Попробуй поговорить с теми, кто продает у вас диски и попросить привезти его на заказ.
2. Кэш. Естественно, что схемное решение как и атлона, так и п3 имеет какие-то основания на это, но они обычно сохраняются неизвестными простым юзерам разработчиками. Если хочешь более точной информации - попробуй почитать мануалы от Intel. Все что я напишу дальше является только моим предположением.
На счет инклюзивности и эксклюзивности - инклюзивное решение организовать проще, потому что логика его работы очевида. Когда процессору требуются новые данные, он обращается в кэш, а тот в свою очередь инициирует цикл чтения из памяти. При этом, если данные есть в кэше второго уровня, то кэш первого уровня их просто загрузит из него. С другой стороны, при эксклюзивном решении возникают вопросы - если требуются данные, которых нет в кэше, куда их помещать; если данные есть в кэше второго уровня, но требуются многократно, то как процессор это отследит и переместит их в кэш первого уровня? Также, что делать с теми данными, которые находятся в кэше первого уровня до помещения туда данных их кэша второго? Логичным кажется поместить их на место тех данных во второй уровень, но это потребует или дополнительного цикла передачи данных между кэшами, или дополнительной шины между ними, чтобы такая передача происходила незаметно. Все это усложняет архитектуру и, видимо, intel считает что это не дает значительного прироста производительности, сравнимого с усложнением технологии. Кроме того, размер кэша первого уровня сейчас настолько мал по сравнению с кэшем второго (в п4 его 512 кб), что это вряд ли повысит быстродействие реальных программ (не синтетических тестов!) хоть на сколько.
Далее, факты подтверждают (особенно на п3), что размер кэша второго уровня не сильно влияет на общую производительность системы, поэтому процессоры celeron от п3 изначально работали на частоте шины 66 Мгц, в то время как сам п3 - на 100 и 133 (чтобы была разница). Это можно объяснить так - большинство алгоритмов оптимизированы так, что кэша в 16 кб под частоиспользуемые данные им вполне хватает, в то время как они обрабатывают объем данных значительно превышающий 256 кб, так что он все равно не помещается в кэш второго уровня. Ты можешь даже сам проделать такой эксперимент - запустить какой-либо тест процессора (лучше реальный, например Quake :), потом перезагрузиться, отключить L2 Cache в BIOS и снова запустить тот же тест - результаты не будут сильно различаться. А вот если ты отключишь кэш первого уровня, то не дождешься, пока загрузиться Windows. Это потому, что он реально необходим процессору современной архитектуры, в то время как кэш второго уровня является как-бы "Hi-end довеском", немного повышающим общую производительность системы.
Кстати, хоть в пентиумах оба кэша работают на одинаковой частоте, но кэш второго уровня оказывается на практике в два раза медленнее кэша первого уровня (у меня на странице есть моя собственная программа измерения скорости чтения процессором оперативной памяти, если хочешь - посмотри ее).
> P.S.: Забыл сказать! Ребята я обратил внимание на то...
Все возможно :) Как говорят, If you want a thing well done - do it yourself! Так что если хочешь что-то исправить, присоединяйся (мне кажется, что ты вполне мог бы это делать :).
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 31.08.2003, 21:10
Отправитель: Bob Johnson
Вопрос № 4052 |
Здравствуйте, Эксперты.
К вопросу №4043. Я и правда забыл вставить приложение, за что и извиняюсь. Но с первым вопросом я сам разобрался. Зато у меня возник др. вопрос - если нет окна, то получается нельзя работать с сообщениями и делать много полезных вещей, например удалять таймер (ведь без хендла окна его ID игнорируется) и нельзя пользоваться глобальными сообщениями от RegisterWindowMessage?
И еще вопрос: как программа может узнать имя своего файла? Я думал, что надо искать в командной строке пробел. Но ведь имя файла может быть и таким: "new file.exe" или "new.exe .exe", к тому же в CommandLine могут попасться и "левые" параметры.
Вопрос отправлен: 30.08.2003, 15:45
Отправитель: MSoft
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, MSoft!
1. Если нужно, можно сделать невидимое окно, чтобы работать с сообщениями. Так делают многие программы.
2. Функция GetModuleFileName (0). После из возвращенной строки необходимо выделить имя файла по последнему "\".
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 01.09.2003, 01:41
Отправитель: Bob Johnson
Отвечает Gibbel
Доброе время суток, MSoft!
1. Вообще-то, очередь сообщений привязывается к процессу, а не к окну. И, соответственно, вы можете обрабатывать некоторые сообщения, не создавая окна. Подробнее - см. PostThreadMessage.
2. Имя исполняемого файла можно получить функцией GetModuleFileName.
P.S.: Для подобных вопросов существует рассылка по WinAPI.
Ответ отправлен: 01.09.2003, 13:16
Отправитель: Gibbel
Вопрос № 4054 |
Здравствуйте!
Что означают верхняя и нижняя линия сканирования у курсора
Вопрос отправлен: 30.08.2003, 16:58
Отправитель: Александр
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Добрый день, Александр!
Это если про текстовый режим, то курсор (как и любой символ) изображается в пределах определенной матрицы (8*8 или 8*14). Линии сканирования нумеруются сверху вниз, начиная с 0. Т.е. стандартный курсор задается верхней линией 06 и нижней - 07. Максимальный курсор - 00 и 07...
---===*** Updated E-Man 1.5 - it's cool!***===---
Ответ отправлен: 30.08.2003, 23:30
Отправитель: _vt
Отвечает Евгений Иванов
Приветствую Вас, Александр!
Есть знакоместо. Оно имеет высоту от 1 до 32 линий. Вот такие шрифты и можно
применять в текстовых режимах!
А этими линиями сканирования ты выбираешь размер курсора.
Можно сделать прямоугльник, а можно полоску...
Ответ отправлен: 31.08.2003, 01:38
Отправитель: Евгений Иванов
Вопрос № 4055 |
Доброго время суток!
1. Проверте пожалуста правильно ли я задаю лимит и базу дескриптора GDT
2. Правильно ли я загружаю gdtr
Это все на Nasmе
Спасибо!
Приложение:
Вопрос отправлен: 30.08.2003, 19:38
Отправитель: Madman
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Приветствую Вас, Madman!
Не понятно что за переменные gdt_cs, gdt_seg, gdt_size. И сразу в глаза бросилось, что в поля lim и limit ты пишешь размер, а надо писать размер минус 1 байт. В общем в приложении я тебе скинул как я это делал (там остается только выполнить lgdt fword ptr gdtr), посмотри.
Приложение:
Ответ отправлен: 01.09.2003, 10:10
Отправитель: ASMодей
Вопрос № 4056 |
Здравствуйте, господа Эксперты.
Мне нужна ваша помощь.
Есть диалоговое окно содержащее помимо кнопок и статического текста строку редактирования. Надо чтобы в строке редактирования отображались более высокие (в 2 раза)
символы, чем основой фонт диалогового окна.
Можно ли как-нибудь указать собственный фонт для строки редактирования при описании ресурса или это надо делать программно.Если программно, то подскажите, пожалуйста, каким алгоритмом действий.
С уважением и благодарностью, Luc.
Вопрос отправлен: 30.08.2003, 19:32
Отправитель: Luc
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Доброе время суток, Luc!
WM_SETFONT
wParam = (WPARAM) hfont; // handle of font
lParam = MAKELPARAM(fRedraw, 0); // redraw flag
An application sends a WM_SETFONT message to specify the font that a control is to use when drawing text.
Ответ отправлен: 31.08.2003, 01:39
Отправитель: Евгений Иванов
Отвечает Bob Johnson
Добрый день, Luc!
На сообщение WM_INITDIALOG пошли этому полю ввода сообщение WM_SETFONT с handle на тот шрифт, который тебя устроит. Сообщение посылается функцией SendDlgItemMessage, а шрифт создается - CreateFont, CreateFontIndirect.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 01.09.2003, 01:40
Отправитель: Bob Johnson
Вопрос № 4057 |
Здравствуйте, эксперты !
Как трассировать чужие dll-ки. Определить
их состав. Dll оформлена в виде COM-сервера ?
Может какие тулзы посоветуйте ?
Вопрос отправлен: 30.08.2003, 19:57
Отправитель: IceWINteR (brothers@atnet.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, IceWINteR!
Для "определения состава" тебе нужен PE дизассемблер. Используй W32Dasm. Он же позволяет отлаживать программы.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 01.09.2003, 01:40
Отправитель: Bob Johnson
Отвечает masquer
Приветствую Вас, IceWINteR!
В олли есть флажок Break on new module, выставляешь, ждешь появления своей и отлаживаешь. Либо выбираешь из уже загруженных модулей. А с COM, помниться, были какие-то прилады со студией, но я этим не интересуюсь...
Ответ отправлен: 01.09.2003, 11:17
Отправитель: masquer
Вопрос № 4058 |
Здравствуйте, подскажите, пожалуйста, как можно изменить громкость - ту, которая изменяется общим регулятором - не конкретно wav, midi ... с помощью api.
Вопрос отправлен: 30.08.2003, 20:57
Отправитель: Евгений
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Приветствую Вас, Евгений!
Используй WINMM.DLL.
Там есть все функции для работы со звуком и др.
Ответ отправлен: 31.08.2003, 01:42
Отправитель: Евгений Иванов
Отвечает Bob Johnson
Доброе время суток, Евгений!
Смотри функции микшера: начни с mixerOpen. Также, поищи ее поиском в MSDN и найдешь какой-то пример для VB.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 01.09.2003, 01:41
Отправитель: Bob Johnson
Вопрос № 4059 |
Вот раньше был сайт www.assembler.ru/
Так это был достаточно мощный сайт про Ассемблер!
Сейчас же там полный маразм.
Если у кого есть зеркало или скачанная копия его, выложите где-нибудь!!!!!!
Вопрос отправлен: 31.08.2003, 02:13
Отправитель: Eugene Ivanov (Eugene_IvanovAT@mail.nnov.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Илья
Приветствую Вас, Eugene Ivanov!
Попробуй http://wasm.ru/docs/1/assemblerru.zip
Ответ отправлен: 31.08.2003, 02:26
Отправитель: Илья
Отвечает _vt
Доброе время суток, Eugene Ivanov!
Архив этого сайта лежит на WASM.RU
---===*** Updated E-Man 1.5 - it's cool!***===---
Ответ отправлен: 31.08.2003, 12:22
Отправитель: _vt
Вопрос № 4060 |
Доброго времени суток, уважаемые эксперты :)))
У маэстро Зубкова в одной из программ-примеров для очистки экрана используется следующий код :
mov cx,25*80
mov ax,0F20h ;заполняет экран пробелами на черном фоне
xor di,di ;ES установлен на видеосегмент раньше по тексту
rep stosw
А не быстрее ли использовать тривиальное
mov ax,3
int 10h ; ?
Спасибо :)))
S/
Вопрос отправлен: 31.08.2003, 04:02
Отправитель: Sslash (assem@ukr.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Greys
Доброе время суток, Sslash!
Цель книги Зубкова научить разностороннему программированию на асьме, а не поиску тривиальных решений!
А что быстее будет работать-спорный вопрос, ведь в первом варианте идет прямое обращение к видеопамяти!
С уважением, Greys!
Ответ отправлен: 01.09.2003, 01:40
Отправитель: Greys
Отвечает Евгений Иванов
Здравствуйте, Sslash!
А чтобы не мигало.
А так всё гладко...
Ответ отправлен: 31.08.2003, 12:17
Отправитель: Евгений Иванов
Отвечает Broken Sword
Здравствуйте, Sslash!
не, никак не быстрее. отреверсь обработчик int 10h если не веришь. меньше - без базару
Ответ отправлен: 31.08.2003, 19:55
Отправитель: Broken Sword
Отвечает Bob Johnson
Здравствуйте, Sslash!
На счет скорости - не думаю, т.к. переключение видеорежима требует множества дополнительных операций. Ты можешь это проверить и сам - используй команду rdtsc, например:
rdtsc
push eax
...
rdtsc
pop ebx
sub eax, ebx
;eax = количество тактов, которое занимал код "..."
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 01.09.2003, 01:41
Отправитель: Bob Johnson
Отвечает Beeblebrox
Добрый день, Sslash!
Короче, но не быстрее. Есть еще более быстрые способы, но уж никак не int 10h
Ответ отправлен: 01.09.2003, 09:46
Отправитель: Beeblebrox
Отвечает Andrew Vext
Добрый день, Sslash!
Проще - да, написать быстрее - да, а вот работает int10 гораздо медленнее.
Вывод прост - если вам безразлично время очистки экрана (ну чистится он у вас один раз в начале программы и все) - ставьте что хотите. Если же вам надо чтобы очистка экрана происходила как можно быстрее - обращайтесь напрямую к видеопамяти (как у Зубкова).
Ответ отправлен: 01.09.2003, 11:28
Отправитель: Andrew Vext
Отвечает Ayl
Здравствуйте, Sslash!
Вообще-то не быстрее. Потому что при выполнении функции установки режима производится куча действий по инициализации видеокарты. Т.е. множество операций типа In/Out, которые на современных процессорах выполняются очень медленно.
К тому же, если не ошибаюсь, в конце инициализации все равно выполняется цикл по заполнению экрана пробелами.
Ну и еще одно - инициализация режима приводит к установке по умолчанию экранного шрифта. Что неприемлемо при его изменении.
Ответ отправлен: 01.09.2003, 12:24
Отправитель: Ayl
Отвечает Igoryk
Здравствуйте, Sslash!
Я так понимаю, это был просто пример очистки памяти без применения прерываний BIOS. Только через видеопамять. Т.к. существует убеждение, что вызов прерывания - процедура медленная, то "быстрее" будет как раз первый вариант.
Ответ отправлен: 03.09.2003, 20:29
Отправитель: Igoryk
Вопрос № 4061 |
Здравствуйте, Эксперты.
Это снова я и у меня опять пара вопросов.
Вопрос №1. При создании окна указываются его размеры и координаты. Я решил сделать окно на половину экрана и центрировать его. Как вы видите, для сохранения Y я использовал esi. Но если я использую для этого др. регистр, например ecx, окно создается вне экрана. Почему так происходит?
Вопрос №2. Можно ли создать (и если да, то как) окно без строки заголовка и границ без использования GetClientRect, CreateRectRgn и SetWindowRgn?
Заранее спасибо.
Приложение:
Вопрос отправлен: 31.08.2003, 11:32
Отправитель: MSoft
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Добрый день, MSoft!
1. Регистры EBX, ESI, EDI, ESP можно использовать в своей программе для WIN32
и не бояться за их изменение. Все другие меняются системными
подпрограммами (ты тоже можешь их менять и не сохранять).
2. Можно вообще создать любое окно.
Убери WS_CAPTION и WS_BORDER.
Типа в dwStyle при вызове CreateWindowEx ставь НОЛЬ
Ответ отправлен: 31.08.2003, 12:18
Отправитель: Евгений Иванов
Отвечает Bob Johnson
Приветствую Вас, MSoft!
1. Потому что любая API функция сохраняет значение регистров ebx, esi, edi, ebp (ну и esp) неизменными, а ecx, eax и edx может изменять.
2. Можно - см. стили окна, кажется тебе нужен WS_POPUP.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 01.09.2003, 01:41
Отправитель: Bob Johnson
Отвечает Beeblebrox
Приветствую Вас, MSoft!
Потому, что Win32 API функции не обязаны сохранять ecx. Можно быть уверенным только в esi, edi, ebx и ebp
Ответ отправлен: 01.09.2003, 09:49
Отправитель: Beeblebrox
Отвечает Gibbel
Доброе время суток, MSoft!
1. Тебе повезло, что хоть с esi оно работает. Вообще, функции WinAPI не сохраняют содержимого регистров.
2. Просто задай соответствующие стили окна.
Ответ отправлен: 01.09.2003, 13:33
Отправитель: Gibbel
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (38) C / C++ (31) Perl (5) Builder / Delphi (18) Pascal (22) Basic / VBA (7) Java / JavaScript (9) PHP (10) Криптография (9) WinAPI (15) |
Пользователю Windows 95/98/Me (50) Windows NT/2000/XP (65) "Железо" (44) Поиск информации (23) |
Администратору Windows NT/2000/XP (33) Linux / Unix (10) |
Юристу Гражданское право (10) Семейное право (6) Трудовое право (6) КоАП (5) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||