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

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


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

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

Выпуск № 471
от 18.01.2003, 18:40

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


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

ASMодей
Статус: Профессиональный
Общий рейтинг: 117.77
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 146.56
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 121.76
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 д.
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.05
URL: Программирование
[Подробней >>]
keleb-glin
Статус: Опытный
Общий рейтинг: 113.45
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.24
URL: Страничка обо мне и моих друзьях
Телефон: +7 902 168 02 65
[Подробней >>]
 
Igoryk
Статус: Опытный
Общий рейтинг: 139.13
URL: IgorykSoft
[Подробней >>]
Andrew Vext
Статус: Опытный
Общий рейтинг: 107.45
[Подробней >>]
Traish
Статус: Опытный
Общий рейтинг: 122.18
[Подробней >>]
 
mang
Статус: Начальный
Общий рейтинг: 109.65
[Подробней >>]
Portnov
Статус: Профессиональный
Общий рейтинг: 114.3
URL: Мой сайтик...
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 117.27
[Подробней >>]
 
DiGiT[old]
Статус: Опытный
Общий рейтинг: 107.17
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 127.1
URL: моя рассылка по Protected Mode
[Подробней >>]
Beeblebrox
Статус: Профессиональный
Общий рейтинг: 110.57
URL: Beeblebrox / TMA HomePage
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 114.06
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]


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

Вопрос № 2406. Доброго дня вам уважаемые эксперты!!! На днях себе решил преобрести новый комп AMD Athlon 170... (ответов: 4)
Вопрос № 2407. Hi ! У меня на комп стоит две OS, одна Win 98, а другая Win XP. Соответственно в начале загрузки мое... (ответов: 5)
Вопрос № 2408. Здравствуйте, уважаемые господа! Большое спасибо, за ответы на вопрос 2393. Я конечно же знал где от... (ответов: 3)
Вопрос № 2409. Уважаемые эксперты!!! Будьте добры ответить на наболевший вопрос. Регистры физически находятся в про... (ответов: 11)
Вопрос № 2411. Можете объяснить мне, что такое байтстаффинг и с чем его едят ? :) Всем с Наступившим Старым Новым Г... (ответов: 1)
Вопрос № 2412. Здравствуйте, уважаемые товарищи эксперты! У меня тут 2 вопроса. 1) Как програмно изменять параметры... (ответов: 5)

Вопросов: 6, ответов: 29


 Вопрос № 2406

Доброго дня вам уважаемые эксперты!!!
На днях себе решил преобрести новый комп AMD Athlon
1700 Mгц. В связи с этим образовалось масса вопросов по теме
и не только. Почему вопросы не по теме я решил задать здесь,
а не в какой-нибудь другой рассылке. Элементарно, Ватсон!
Лучше системных программистов пишущих под железо, в вом же
самом железе никто не разбирается. Можно сказать, что это
комплимент, но так оно и есть. Когда начал заниматься АСМом,
я начал понимать работу железа. Так вот что мне хотелось бы
знать:
1) Совместимость АСМ-их команд под Пни теже самые, что и под
АМД? Есть ли какие-нибудь проблемы при написании программ на
АСМе под АМД. Есть ли какая-нибудь инфа для ознакомления.
Только не надо меня отсылать на amd.com или еще куда.
2) Кто знает как ведет себя (с другими девайсами) мама типа
M/B CHAINTECH CT-7VJL APOGEE Deluxe SocketA (462) AGP+LAN+SB 6Ch USB2.0 U133 ATX 4DDR DIMM
и стоит ее вообще брать?
И потянет ли кулер ASUS Cooler for Socket 370/A(462) (Noise Control, 25-37дБ, 3200-4800об/мин, Cu+Al)
для вышеуказанного проца. Или кто-то предложит лучше вариант.
Просто не хочется за зря время убивать с глючным компом.
С ним этак дефицит. Лучше прогу на этом компе в это время на АСМе написать.
Пока, Duser.



Вопрос отправлен: 13.01.2003, 18:34
Отправитель: Duser (glaxo@mail.ru)

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

Отвечает ASMодей

Здравствуйте, Duser!
1. Все обычные команды - те же самые. Различаются только
расширения: у пней - MMX, MMX2, SSE, SSE2, а у AMD - 3DNOW
2. Конкретно про эту мать ничего сказать не могу, но по отзывам
платы CHAINTECH неплохие.
3. Для процессора AMD кулер надо брать самый надежный, иначе
если он вдруг остановится, процессор может сгореть в считанные
секунды.


Ответ отправлен: 14.01.2003, 05:58
Отправитель: ASMодей


Отвечает masquer

Приветствую Вас, Duser!
1. Совместима, кроме SSE2. Толька на оффсайте и есть инфа.
2. Х.з., но лучше побрандовее брать, потом дешевле будет
Для Athlon XP (а у тебя именно такой) проблема охлаждения не так актуальна, как для предыдущей серии.

Ответ отправлен: 14.01.2003, 11:25
Отправитель: masquer


Отвечает Sensey

Добрый день, Duser!
1) Данный Атлон не знает команд SSE(?) и SSE2, с остальным - все в порядке..
2) Конкретно о этой не знаю, на Чайники - это средний класс матерей. Я лично предпочитаю либо Бренды(ASUS AOpen) либо Солтеки
3) В спецификации к кулеру должно быть написано Up to ...
Вот и смотри. Хотя вроде неплох, с приведенными хар-ками.

Ответ отправлен: 14.01.2003, 12:13
Отправитель: Sensey


Отвечает Bob Johnson

Приветствую Вас, Duser!
1. AMD совместим по командам с Intel PIII. Если нужно точно - смотри документацию. Не буду тебя отсылать на амд, т.к. сам там никогда не был. Посоветую скачать документацию от NASM - там в приложениии есть краткий справочник команд, по которому можно определить процессор, на котором она работает. Плюс к п3 на амд есть еще 3DNow (какое-там типа плюс или 2). Это небольшое расширение команд.
Кулер - смотри по размеру. Атлон греется достаточно сильно. Но исходя из названия, Cu + Al, т.е. еще и медный... Должен потянуть. Стоит-то сколько, $20 небось?
Вариант лучше, естественно, есть - "LN2" - Liquid Nitrat (т.е. жидкий азот) - вот тут уже любой проц будет работать ок. :-)


Ответ отправлен: 14.01.2003, 12:57
Отправитель: Bob Johnson


 Вопрос № 2407

Hi !
У меня на комп стоит две OS, одна Win 98, а другая Win XP. Соответственно в начале загрузки моего комп, выходит меню виндоса, какую операционную систему я хочу (ставил сначала Win 98, а затем XP, то есть менеджер загрузки стандартный виндоса). Я решил Win 98 стереть, простое удаление папок этой OS мне ничего не даст, ведь останется все равно опция загрузки операционной системы Win 98. Вопрос в следующем, в какой части жесткого диска находится информация о загрузки операционных системах? Как я могу на асме стереть эту информацию? Буду, благодарен за любую инфу. Или возможно есть нормальный способ стереть не нужный мне виндоус средствами, например XP? Только плиз не предлагайте варианты ответа типа, переустанови все заново.
Best regards
alexneta.



Вопрос отправлен: 13.01.2003, 22:36
Отправитель: alexneta (alexneta@aport2000.ru)

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

Отвечает keleb-glin

Здравствуйте, alexneta!
ищи и правь файл boot.ini, больше ничем не могу помочь ( я сам ламер )


Ответ отправлен: 15.01.2003, 21:24
Отправитель: keleb-glin


Отвечает Gibbel

Доброе время суток, alexneta!
Посмотри в C:\boot.ini, там должен быть список систем...

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


Отвечает Igoryk

Приветствую Вас, alexneta!
Есть такая часть на диске Master Boot Record. Здесь собраны описания всех загрузчиков на всем диске (для каждой ОС свой). Об этом ты можешь почитать в Интернете. А вообще XP предоставляет возможность затирать Windows из-под которого был устанволен, если ты не укажаешь другую папку длч установки.

Ответ отправлен: 14.01.2003, 11:28
Отправитель: Igoryk


Отвечает Andrew Vext

Здравствуйте, alexneta!
На диске С у вас должен быть файл boot.ini (если загрузчик действительно стандартный виндовый. Это обычный текстовый файл с защитой от записи. Снимите защиту от записи, откройте его в Блокноте, удалите строку, относящуюся к Вин98 и сохраните. Вот и все. Строка выглядит примерно так: multi(0)disk(0)rdisk(0)partition(1)WIN="Windows 98"

Ответ отправлен: 14.01.2003, 12:46
Отправитель: Andrew Vext


Отвечает Bob Johnson

Здравствуйте, alexneta!
> Как я могу на асме стереть эту информацию...
На асме сделать это очень сложно...
Тебе проще удалить каталог Windows (от 98), каталог Program Files и в корне диска С удалить logo.sys, msdos.sys, io.sys, config.sys, autoexec.bat, BOOTSECT.DOS.
Далее редактируешь обычным текстовым редактором boot.ini - удалешь строку C:="Microsoft Windows" или что-то похожее и проверяешь, чтобы default было равно multi(0)disk(0)... и т.д. (т.е. оставшейся строке, которая за Winxp отвечает).


Ответ отправлен: 14.01.2003, 15:28
Отправитель: Bob Johnson


 Вопрос № 2408

Здравствуйте, уважаемые господа!
Большое спасибо, за ответы на вопрос 2393. Я конечно же знал где откопать интеловские и амдешные мануалы, но думал что для начала это несколько закруто будет. Но вот слил 13Мб интеловских и 3Мб амдешных мануалов (при моем-то диалапе, вобщем процесс долго длился) – и медетирую. Круто!!! Конечно, несколько неудобно эти pdf-ы читать. А насчет переполнения – это я сдуру очепятку допустил. Гогда я говорил о shl и PSLLQ, я имел ввиду перенос. Поэтому перефразирую вопрос: Есть ли команда логического сдвига (MMX, SSE, SSE2), которая бы влияла на СF. Ессно я собираюсь сдвигать QWORD или DQWORD. Даже не знаю как еще объяснить. Опять же напутаю. Например если 63(0) бит регистра mm0 == 1 и я сдвигаю его влево(вправо), то будет перенос. Извините, но мануалы еще не успел все просмотреть.
И по ходу дела у меня возник другой вопрос: В MMX есть хорошие команды упаковки/распаковки. Жаль что минимальный тип, который они поддерживают это байт. А мне вот понадобилась упаковка/распаковка 8бит->4бит->8бит. А вообще интересует более общий вариант – алгоритм упаковки/распаковки 2^n->2^m->2^n (mЗаранее благодарю, за отобраное у Вас время и искренне надеюсь что вопрс интересный.
С уважением, Бадян.



Вопрос отправлен: 13.01.2003, 23:56
Отправитель: Бадян (sba@litech.net)

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

Отвечает Igoryk

Приветствую Вас, Бадян!
Повторяю MMX-команды НИКОГДА не вызовут переполнения! Кстати хороший мануал можешь скачать здесь: http://igoryksoft.narod.ru/docs/asm/mmx.zip

Ответ отправлен: 14.01.2003, 11:28
Отправитель: Igoryk


Отвечает masquer

Доброе время суток, Бадян!
Проще было заказать на этих сайтах книги и компакты (и интел и амд высылают материалы почтой в течение 2-3 недель).
В ММХ есть понятие насыщения, но переноса там нет. Повторяю, там он не нужен. Ну и флаги никакие не ставятся.
Такую упаковку можешь и сам написать. На рсдн с полгода назад было компо на На второй странице нечто похожее тебе и нужно.

Ответ отправлен: 14.01.2003, 11:41
Отправитель: masquer


Отвечает Bob Johnson

Доброе время суток, Бадян!
А как ты себе представляешь, чтобы PSLL влияла на флаг переноса? Она ведь сдвигает-то все элементы независимо, т.е. если ты сдвигаешь двойное слово в sse регистре, то там таких 4. Получается, что надо 4 флага переноса.


Ответ отправлен: 14.01.2003, 15:28
Отправитель: Bob Johnson


 Вопрос № 2409

Уважаемые эксперты!!!
Будьте добры ответить на наболевший вопрос. Регистры физически находятся в проце. А где физически находится оснавная память? В оперативке и на винте или только на винте. В книгах написано: "Операционные системы (кроме DOS) могут размещать сегменты, с которыми работает программа пользователя, в разных местах в памяти, и даже могут временно записывать их на диск, если памяти не хватает". Вопрос в том, в каких разных местах? Почему не упоминается про оперативную память к ней же обращение происходит быстрее, чем к диску.
С уважением yuran.



Вопрос отправлен: 14.01.2003, 07:29
Отправитель: yuran (yuran@male.ru)

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

Отвечает ASMодей

Доброе время суток, yuran!
Как это не упоминается? Именно про оперативную память и идет
разговор в литературе при упоминании слова "память". А основная
память - это просто логически выделенная часть оперативной памяти
и именно в ней ДОС размещает сегменты программ. И если
оперативной памяти не хватает, то какую-нибудь неиспользуемую
часть программы можно записать на диск во временный файл.


Ответ отправлен: 14.01.2003, 20:28
Отправитель: ASMодей


Отвечает keleb-glin

Доброе время суток, yuran!
Вообще-то, все программы загружаются в оперативку. Только оттуда проц может читать данные. А если не хватает оперативки, по-моему, часть данных пишется в своп.


Ответ отправлен: 15.01.2003, 21:21
Отправитель: keleb-glin


Отвечает Traish

Здравствуйте, yuran!
В оперативке, но если ее недостаточно, то некоторые страничные фреймы (или сегменты, если не используется страничная трансляция) могут быть записаны на жесткий диск. Ну, если ты, конечно, сможешь как-нибудь поставить на свой комп 64 Тб оперативки, то необходимости в этом не будет.

Ответ отправлен: 14.01.2003, 08:35
Отправитель: Traish


Отвечает mang

Здравствуйте, yuran!
Память как тебе сакзать находится в памяти и в оперативке и на винте и даже регистры тоже память,к стати они то и содержат адресса не обходимые для работы проги.А вот как эта прога их распределяет надо спросить унее самой.И последнее временные процесы результаты в оперативку а постоянные или длительного хранения на диск(см.Организацию и способ адресации памяти)


Ответ отправлен: 14.01.2003, 11:01
Отправитель: mang


Отвечает Igoryk

Здравствуйте, yuran!
Ну "где" так сразу и не скажешь. А пример ОС когда есть возможность писАть на диск - Windows. Может быть ты запускал когда-нибудь файл больше по размеру, чем твоя оперативная память. Так вот как процессор обрабатывает ее:
1. Выбранная цепочка команд для выполнения в кэш из оперативной памяти.
2. Выбранный участок программы в оперативную память, если не хватает, то в виртуальную (в Windows это файл win386.swp).

Ответ отправлен: 14.01.2003, 11:28
Отправитель: Igoryk


Отвечает Gibbel

Доброе время суток, yuran!
При обращении к какой-либо ячейке памяти, ты всегда обращаяешься к физической памяти...
В защищеном режиме появилась возможность использовать виртуальную память... Обращение к ней с точки зрения программы происходит так же, как и к физической памяти... Но, при этом происходят некоторые процессы, незаметные для твоей программы: Вся оперативная память разбивается на страницы... Если физической памяти недостаточно, то часть адресного пространства свопируется на жесткий диск... При обращении к какой-либо ячейке памяти происходит проверка, загружена ли необходимая страница в физическую память, или же она находиться на жестком диске. Если она загружена в память, то ты просто считываешь соответствующую ячейку. Если же она выгружена на диск, то она загружается в физическую память, при этом, если необходимо, часть физической памяти отгружается вместо нее на диск, и далее происходит обращение к физической памяти, так, как если бы данная страница изначально была загружена...
P.S.: Приношу извинения, за слишком примитивное объяснение, но так, как мне кажется, тебе будет более понятно.

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


Отвечает Portnov

Приветствую Вас, yuran!
Хе-хе, как все запущено...
"основная память" находится в ОЗУ. Дело такое:
Есть ОЗУ. Оно у вас, например, 128Мб. Это микросхема или две-три микросхемы.
Есть память. В зависимости от режима проца (реальный/защищенный), в зависимости от ОС понятие памяти варьируется. Остается одно: память - это множество сегментов памяти. Сегмент - это некоторое пространство, которое можно использовать в своих нуждах.
В "классическом" случае в защищенном режиме каждый сегмент имеет размер 4Гб (ни в одной ОС AFAIK это не реализовано, т.к. это никому нафиг не нужно, но там сегменты тоже довольно большие). Сегментов довольно много. 4Гб*(например)2=8Гб. Видели вы блоки ОЗУ по 8Гб? Так что используется система всяких там страничных преобразований, приводящая к тому, что процесс идет так:
Программа хочет чего-то там (например) прочитать во втором гигабайте из ваших 128 мегабайт ОЗУ. Для этого она, ессессно, обращается к процу, сообщая нужный ей адрес. А у проца есть специальные таблицы (GDT, LDT...) и формулы (реализованные аппаратно). Он по этим формулам и таблицам преобразовывает адрес, полученный от программы (который ссылается черт те куда) в физический адрес, который ссылается куда-нибудь в третий килобайт (например) вашей оперативы (ОЗУ), читает по этому адресу данные и сообщает их программе. При этом программа уверена, что по ее просьбе прочитали что-то во втором гигабайте. Так же происходит и запись.
Так как никакими ухищрениями невозможно запихнуть гигабайты в мегабайты, то часть памяти хранится на диске (грубо говоря, в свопе), но так, что программы об этом не подозревают:
Программа обращается далеко-далеко... Проц по GDT (или там LDT) видит, что такого адреса в ОЗУ нет, при этом дико кричит (говоря на языке системного программиста, генерирует исключение #NP - Not Present). Этот вопль слышит ОС (перехватывает исключение) и быстренько читает нужную часть памяти из свопа в ОЗУ, изменяет GDT так, чтобы по новым правилам преобразования ранее не существовавший адрес ссылался во вполне конкретное место ОЗУ, и возвращает управление. Проц видит, что надо же, показалось, адрес-то такой есть, производит преобразование, читает оттуда, передает программе, а программа всей этой возни не замечает, просто работает дальше. ОС регулярно сбрасывает неиспользуемые в данный момент участки памяти в своп. Естественно, учитывается, какие данные чаще используются, так что самое нужное остается в ОЗУ.
Надеюсь, более-менее понятно объяснил... Более подробно - к Broken Sword'у и его рассылке.
С уважением, Portnov.

Ответ отправлен: 14.01.2003, 11:35
Отправитель: Portnov


Отвечает Sensey

Приветствую Вас, yuran!
Перефразирую немного книгу:
Операционные системы (кроме DOS) могут размещать сегменты, с которыми работает программа пользователя, в разных местах в памяти, и даже могут временно записывать их на диск, если оперативной памяти не хватает.
И наоборот, есть понятие кеширования данных - когда данные с винта остааются в памяти для последующего быстрого чтения либо предварительно читаются... Например легче раз прочитать кусок в 64к, чем 65536 раз читать по 1 байту :)


Ответ отправлен: 14.01.2003, 12:17
Отправитель: Sensey


Отвечает Ayl

Доброе время суток, yuran!
Что ты понимаешь под основной памятью? Это какое-то новое понятие.
На самом деле ситуация с памятью обстоит так. Имеется 3 вида адресного пространства (АП) - физическое (ФАП), линейное (ЛАП) и виртуальное (ВАП) (оно же логическое).
С ФАП все обстоит очень просто. Физический адрес - это тот адрес, который выставляется на адресную шину процессора. Соответственно, диапазон физических адресов зависит от разрядности адресной шины. При 16-ти линиях это будет 64К, при 20-ти - 1М, при 24 - 16М, при 32-х - 4Г.
Естесственно, что размер реально установленной памяти может не соответствовать максимально возможному адресу. Но важно, что множество адресов ячеек оперативной памяти входит в множество физических адресов.
С ФАП закончили, перейдем к ВАП.
Виртуальный адрес - это совокупность всех возможных адресов вида:
сегмент (селектор):смещение
Виртуальным этот адрес называется потому, что никогда (в защищенном режиме) нельзя сказать наверняка, что на самом деле представляет этот адрес. Для того, чтобы из виртуального адреса получить физический (а только он реально отвечает за выборку данных) нужно еще проделать множество операций.
Размер ВАПа в реальном режиме составляет 4Г, в защищенном - 64Т.
Теперь посмотрим, что такое ЛАП.
В реальном режиме линейный адрес получается из виртуального путем умножения номера сегмента на 16 и прибавления к результату смещения; в защищенном режиме - прибавлением 32-хразрядного смещения к базе сегмента.
В результате в реальном режиме имеем размер ЛАПа 1М, в защищенном - 4Г.
Теперь тебе должно быть понятно, что твой вопрос задан некорректно, потому что ты не указал, о каком виде памяти ты говорил.
Если говорить о процессоре, то он всего лишь выставляет на адресную шину физический адрес. Этот адрес он получает из виртуального (указанного в команде). На промежуточном этапе преобразования возникает линейный адрес. Кстати, в реальном режиме линейный адрес и физический - суть одно и тоже. В режиме сегментной адресации в защищенном режиме ЛАП и ФАП также совпадают.
Данные с адресной шины поступают на микросхему памяти, в результате чего либо на шину данных будет выдано значение из ячейки с этим адресом, либо туда будут записаны данные с шины данных. Еще один вариант - отказ в обслуживании при физическом отсутствии ячейки с указанным адресом.
Концепция систем с виртуальной памятью (СВП) позволяет очень большим программам или группам программ работать в сравнительно малом объеме физической оперативной памяти (ОП) без использования техники оверлеев.
При этом на диске выделяется область, называемая "областью обмена" ("swapping area"). В ОП находятся только наиболее используемые сегменты (или страницы при страничной организации).
Как это работает. В дискрипторах сегментов и в описателях страниц выделен специальный бит для индикации присутствия этого объекта в ОП. Кроме этого введен механизм ловушки (особого прерывания), при помощи которого процессор указывает СВП необходимость загрузки в ОП отсутствующих данных. И третий необходимый элемент - возможность процессора заново выполнить команду после того, как СВП загрузила ранее отсутствующую страницу в память и пометила ее как присутствующую.

Ответ отправлен: 14.01.2003, 13:42
Отправитель: Ayl


Отвечает Bob Johnson

Добрый день, yuran!
Тут имеется ввиду то, что операционные системы используют страничное преобразование, которое позволяет физически находящуюся в разных местах память объединять в один логический блок (так же, как и FAT на диске), т.е. память может быть фрагментирована. При этом, в отличии от диска, она не работает из-за этого медленней.
Физически оперативная память находится там, что называют DIMM. Когда ее начинает не хватать, ОС может временно выгрузить на диск ее часть (которая редко используется), а потом, при необходимости, загрузить снова.


Ответ отправлен: 14.01.2003, 15:29
Отправитель: Bob Johnson


Отвечает DiGiT[old]

Здравствуйте, yuran!
ОснАвная память, что ты под ней понимаешь. Память бывает виртуальная и физическая(для 32 разрядного PC), виртуальная может быть где угодно на то она и вирутальная, а физическая в модуле памяти. Размер вирутальной памяти много больше физической, поэтому иногда и приходится поюзать другие накопители.

Ответ отправлен: 15.01.2003, 02:00
Отправитель: DiGiT[old]


 Вопрос № 2411

Можете объяснить мне, что такое байтстаффинг и с чем его едят ? :)
Всем с Наступившим Старым Новым Годом!!!!



Вопрос отправлен: 14.01.2003, 14:05
Отправитель: Maks

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

Отвечает Sensey

Здравствуйте, Maks!
Едят его в протоколах связи например.
Некоторые микрухи(TL, Xara) можно настроить так, что они будут вырабатывать аппаратно прерывания при получении спецсимвола.
Соответственно заменяют этот байт на 2 других.
Пример:
По получении символа F0 выработать прерывание по концу пакета данных. Соответственно, всередине пакета не должен он встретиться...
Соответственно заменяем F0 на 00 FE (второй символ тут не важен)
и приходится 00 (так как он индикатор)на 00 00
Тогда исходная последовательность:
F0 00 превращается в 00 FE 00 00


Ответ отправлен: 16.01.2003, 15:16
Отправитель: Sensey


 Вопрос № 2412

Здравствуйте, уважаемые товарищи эксперты!
У меня тут 2 вопроса.
1) Как програмно изменять параметры биоса. Тоесть допустим мне в биосе надо поменять частотут процессора - могу зайти в биос всё что нужно сам зделать ручками - но мне нужно программно. ТК тут у меня есть мужик знакомый - компьютерщик - но в программинге и структуре компа-операционок он 0 - ваще не знает. - Но зато какьл умеет разгонять (не процессор разгонять! а "оптимизировать" как он говорит). Тык вот мы с ним хоти этот процесс так сказать автоматизировать - он использует какую то программку которой он меняет параметры биоса вручную (и ещё кое что - но это не за биос) - он хочет чтобы я сделал аналог так сказать программный... во интересно как их менять - и вообще что можно в настройках биоса менять а что нельзя ?
2) Вопрос по САМОМОДИФИЦИРУЮЩЕМУСЯ коду- на wasm.ru по этому делу замечательные статьи есть - я почти всё прочитал. Но то всё немножко не то - хотелось бы КАЧЕСТВЕННОЙ самомодификации. тоесть изменения на качественноу уровне а не так сказать количественном. У меня есть задумка исследовательская тут... ТОесть интересно - допустим есть код из нескольких самомодифицирующихся (НЕТ - НЕ ШИФРУЮЩИСЯ!!! А ИМЕННО МОДИФИЦИРУЮЩИХСЯ) кусков - и есть ещё кусок который выполняет функцию зависющую от тех самоммодифицирующихся кусков - может ли быть достигнут качественный прорыв в изменеии потом??? Я это спрашиваю в контексте того что допустим у меня есть объект кода - у него есть функции - всё модифицируется - а потом вдруг раз - и появилась !НОВАЯ! функция у объета, причём не заложенная в начале а именно сгенерированная - тоесть скажем программно эмулированный зверёк получил новое свойство ...
--ПОЖАЛУЙСТА НЕ ПРИВОДИТЕ В ПРИМЕР С++, там не тот полиморфизм - там уже всё методы заложены в начале проги--это не то.
ps: плиз пошлите мне побольше у кого чего есть, на любых языках статей по поводу самоизменяющегося кода (НЕ САМОШИФРУЮЩЕГОСЯ а именно изменяющегося как в моём примере в окошке) - и ГЛАВНОЕ - как ЕГО ПРИМЕНЯТЬ? Что с ним делать? В каких ситуациях есть наибольшая оддача от его свойств (про вири я уже читал)?
И ещё если можно - побольше пришлите ИСХОДНИКОВ самомодифицирующегося кода на асеме на edsam@spidernet.com.cy Вообщето мне кажется что самомодифицирующееся так сказать объекты это тема скорее биологии и математики - СКАЖИТЕ ЧТО ПОЧИТАТЬ по теме "общей теории самомодифицирования" - навернякак ведь она есть в каком то виде....
ps: с нетерпением жду побольше инфы! Поможите кто чем может как говорится.


Приложение:


Вопрос отправлен: 14.01.2003, 18:31
Отправитель: Эдвард Самохвалов (zeleniy_kot@yahoo.com)

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

Отвечает Sensey

Приветствую Вас, Эдвард Самохвалов!
По поводу самомумификации :) попробуй поизучать нейронные сети.
ЗЫ Чуть не написал нейтронные :)))


Ответ отправлен: 14.01.2003, 19:11
Отправитель: Sensey


Отвечает Broken Sword

Здравствуйте, Эдвард Самохвалов!
хе... я сильно не вникал, но помоему в приложении имено яркий пример "SMC ради самого SMC", ты там все подгоняешь только для одной цели: чтобы код был самомодифицирующийся, т.е. никакой полезной функции оно не несет, таких примеров можно напридумать целую кучу, толку от них - никакого. Не в этом искусство... Мастерство и сила именно в таком SMC, который мало только выполняет полезное дело, но еще и в процессе выполнения поражает своей гениальностью и непредсказуемостью поворота событий!!!

Насчет настоящего, классического SMC - это rem22. Такая прога может родиться в голове только случайно (как и все остальные гениальные вещи), вообще все это практически не поддается линейному анализу и т.п., здесь нет закономерностей, есть некие общие идеи, но ничего конкретного...
конечно, идея заложенная в rem22 применяется не так уж редко (особенно в компах на размер кода), однако, подобные трюки недолюбливаются, их также называют "dirty tricks" (грязные трюки), потому что кроме полезной работы они выполняют еще и потусторонние, хотя и безобидные, но бесполезные вещи.
К сожалению, избавиться от них невозможно, поэтому никогда не будет создано того, о чем ты писал сквозь строки - пока машина не может превзойти человека и создать настоящее произведение искусства, хотя кой-какие черты в шедеврах типа rem22 или tube однозначно прослеживаются, и если эту стезю не затопчет ООП (хотя уже почти затоптало) и т.п. топорные методы и интересы мегамонстров комп. мира, то лет через 100 все возможно...
ой блин.

Ответ отправлен: 14.01.2003, 20:50
Отправитель: Broken Sword


Отвечает Beeblebrox

Доброе время суток, Эдвард Самохвалов!
Бога не обманешь - больше информации, чем содержится в коде, из него не извлечешь. Так что выбрось из головы идею насчет получения нового качества путем модификации имеющегося
SMC используют для сокращения размера программ (используя факт, что похожие инструкции имеют похожие опкоды) и для защиты от трассировки

Ответ отправлен: 14.01.2003, 18:56
Отправитель: Beeblebrox


Отвечает masquer

Добрый день, Эдвард Самохвалов!
1. Не знаю, что такое "какьл", и как и зачем его нужно разгонять.
2. Говорят, если миллион обезьян посадить за печатную машинку, со временем они могу "Война и мир" набрать. Это так, намер.
А по теме - бери полиморфные вируси и разбирайся, что к чему

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


Отвечает baldr

Приветствую Вас, Эдвард Самохвалов!
Прикольная получилась бы программка! :) Представляешь - запускаешь ты игрушку, а она тебе -
сейчас я тебе сделаю компьютер быстрее! Ты ей - ОК, конечно, а то мой AMD что-то притормаживает,
когда я в 3DMAX рендерю... Нажимаешь ОК и смотришь, как кристалл тихо капает на твой ковер... :)
Но это, конечно, я утрирую... Я понимаю что вы хотите настроить...
Понимаешь, BIOS у всех плат разный! Даже у одного производителя чуть-чуть различающиеся
платы могут иметь разные версии BIOS. А "что-то изменить в настройках BIOS" - значит изменить
значение в энергонезависимой памяти - а это уже перепрограммирование BIOS. Для этого надо
точно знать - где и какие значения находятся. Для каждой материнки производители BIOS
выпускают отдельный программатор. Как он работает, конечно, я могу объяснить, но куда и что
писать, и тем более - куда и что писать нельзя - это точно сказать нельзя... Сам BIOS, насколько
я знаю, таких функций, типа, "изменить такой-то параметр" не предоставляет.
И вообще, часто на материнках есть переключатель, запрещающий программное обновление BIOS.
И кратко про полиморфики... Наибольшая отдача от них, думаю - это когда код не просто изменяется,
а запутывается таким образом, что при ручной трассировке или отладке практически невозможно
понять смысл операций...


Ответ отправлен: 16.01.2003, 00:50
Отправитель: baldr



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (34)
C / C++ (29)
Perl (5)
Delphi (18)
Pascal (22)
Basic / VBA (12)
Java / JavaScript (7)
PHP (6)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (35)
Windows NT/2000/XP (27)
"Железо" (33)
Поиск информации (19)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (14)
Юристу
Гражданское право (9)
Семейное право (6)
Трудовое право (5)
КоАП (3)

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




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

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


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

В избранное