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

 WASM Phorum —› WASM.BOOKS —› Юров. Учебник.

. 1 . 2 . 3 . >>

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


Дата: Сен 19, 2003 11:35:11

Peer pressure, конечно, но что нарыл :)

Сразу скажу, прочитать ВСЮ книгу у меня нервной системы не хватило и уже и не хватит, наверное... Поэтому выбрал то, что бросилось в глаза при беглом просмотре. Будет все немного неупорядоченно, но уже как есть. Италиком выделены цитаты из учебника.

Итак, написана в 2000, издана в Питерпресс в 2001.
421. Обоснование написания программ на асме ну очень не убедительное.
422. Описание оконного приложения - либо наивное, либо неполное.
434. Судя по всему автор в начале страницы говорит об инициализации CRT startup коде, и дальше говорит но и отказаться от них (о функциях инициализации - прим.) нельзя. Наивное мнение.
435. О функции WinMain - Эта функция используется лишь для того, чтобы компилятор мог осуществить генерацию кода, выполняющего инициализацию приложения. Что бы я делал без дяди Юрова - так и умер бы в неведении об истинном назвначении WinMain.
442. Автор предлагает всем вручную конвертировать сишные хедеры. Пожелаем ему в этом успехов.
189.
test eax, 00000010h
jz m1 ; переход, если 4-й бит равен 1

Тут либо автор, либо корректор были пьяны :)

197. Пример, показывающий работу shld.
;...
.data
pole_l dd 0b21187f5h
pole_h dd 45ff671h
.code
;...
.386
mov cl, 16
mov eax, pole_h
shld pole_l, eax, cl
shl pole_h, cl ; pole_l = 87f50000h;
pole_h=6711b211h

Здесь даже без отладчика видно, что спутано грешное с праведным. Вообще я все примеры не проверял - но ошибок и опечаток там предостаточно.

458. Очепятка, но забавная - Windows требует, чтобы оконная функция сохраняла значения регистров ebi, edi и esi. А далее следует не совсем верное объяснение - почему и указание, что сохранять нужно, оказывается, все регистры, за исключением eax.
Каюсь, грешен - регистр ebi я не сохраняю, да и не нашел я его у себя... Ах, да, книга-то посвящена "программированию микропроцессора Intel", а я то со своим некошерным Athlon-ом подумал об ошибке. Ладно, спишем на особенности процессора автора.


Дата: Сен 21, 2003 20:20:08

:)))
брось ты эту каку :)) Ну захотелось дяде подзароботать на студентах! Между прочим у него это неплохо получается даже...Глядишь регистр ebiнайдут :)


Дата: Сен 24, 2003 14:25:17

Зря ты так i2i. На мой взгляд книжка неплохая. Правда практикум действительно слишком заумный!!!


Дата: Сен 24, 2003 14:34:49

Chib777
Книга - "ацтой", по другому не скажешь. По крайней мере для восприятия она очень тяжелая, такое чувство, будто автор не совсем понимает, о чем вообще речь идет. Сравнить, например, с тем же Сваном - небо и земля...
Дабы не оффтопить - на задней обложке книги написано о том, что в книге описаны форматы исполняемых модулей (или что-то в этом духе), на самом деле - ни слова :) (В авторстве г-на Юрова я бы с большим интересном об этом почитал :))))))


Дата: Окт 1, 2003 12:56:14

Так мы далеко не уедем :)
Друзья,
вот моё ненавязчивое, субъективное, крестьянское мнение:
1. Пусть пишут больше книжек и разных.
Считаете, что книга не та - напишите свою или по крайней мере
напишите тот кусок, который вам не понравился как надо.

2. Никаких больших денег на книгах в России не заработаешь,
это миф. Затраты времени и нервов на написание одно из самых
не эффективных на полученный рубль. Их пишут либо чтобы
прославится, либо из альтруизма, либо потому, что просто не
могут не писать.

3. Имею наглость думать, что я обнаружил рекордное колличество
ошибок в книгах по низкому уровню, то что я запостил меньше процента
от имеющихся, просто я хочу выложить их систематично страница за
страницей и поэтому перепроверяю заново издания.
И при этом я тем не менее скажу - отлавливать ошибки, или поправлять
несоизмеримо легче чем писать самому.
Тоже касается кода. Я помню множество случаев, когда я безуспешно
пытался найти процедуру, разуверевшись что таковую можно найти
кидал в публику черновой вариант своего алгоритма, тут же находилась
толпа из тех кого я до этого спрашивал которая показывала свои
улучшенные варианты, то что у них до этого их небыло - для меня
факт. В результате за именем процедуры, которой бы сто пудов небыло
не кинь я свой вариант, часто закреплялось авторство того кто просто
сделал последний штрих.
Это может в открытии Америк самое славное имя того кто был первым,
в нашем кодёрском деле, быть первым одно из самых неблагодарных
положений. В том числе и в написании книжулей.

Поэтому пару слов в защиту Юрова.
1. Ни в одном издании в нашей славной Родине, кроме как в Ассемблер
специальный справочник Юрова нет машинных кодов.
Он это сделал первый и единственный на данный момент.
Да, я сам нахожу по 3и ошибке на каждой странице.
Но меня волнует другой вопрос - чего же другие-умные этого не сделали?
Может кишка просто тонка? Формат у него лучше чем у Intel, подобный
же формат использует Абель. Но у Абеля только целочисленные команды.
Я считаю его не идеальным, и думаю знаю как написать лучше. Но!
Я ведь пока не написал. А буду писать - всё одно мне легче уже будет -
у меня перед глазами чужие ошибки и чужие идеи, я прибавлю уже к
к ним свои идеи + свои исправления, и пойдём дальше.
А когда кто-то прочитает мою книженцию, авось и он придумает как лучше
сделать, и сделает получше чем я. Но для этого мы должны пробывать,
делать и видеть труд других.
Формат команд кстати лучше описан был Григорьевым, но Григорьев не
переиздаётся со времён своего последнего 2х томника, и по понятным
причинам - издательства боятся i486 в имени книги - думают что книга
с таким названием будет воспринята как старьё (и не без
оснований если рассматривать это дело с точки зрения психологии обывателя -
покупателя). Но и у Григорьева самих команд в машинном коде небыло.
Только формат.

2. Практикум заумный?! Назовите мне хотя бы ОДНУ книгу которая была бы полностью
посвящена написанию именно алгоритмов на ассемблере для x86!
Какая бы корявая эта книга не была - она Единственная опять же.
Почему ассемблер то очень редко используется в конкурентых продуктах?
Что из-за того что mov add программисты понять не могут?
Из-за того что алгоритмы писать не умеют на асме.
После того как он изучит API или прерывания - ему с этим ещё нужно что-то
сделать чтобы программа его делала что-то такое что другие не умеют.
Для этого нужно уметь формализовывать задачу, находить систему в данных,
искать мат. модель для реализации этой задачи и наконец свободно кодировать
эту мат модель на асме.
И вот тут то фига с маком в книжках. У меня сотни книг посвящённых алгоритмике -
везде либо С, либо Паскаль-Модула, Форт, Лисп и т.д. С асмом только очень старые
типа для СМ2 (это наиболее "свежее"). Людям просто банально негде научится
строить эффективные управляющие блоки на асме.
Вон Aquila даже постоянно говорил, или те же Hutch с Iczelion что мол приемущество
MASM в том что можно управляющие блоки строить с высокоуровневыми выражениями
(IF,WHile и т.п.) В другое время я бы сказал - позорище, и эти люди называют себя
низкоуровневыми программистами, сами себе шоры на глаза надевают да ещё называют
это приемуществом.
Но не скажу!
Это не глупые люди, а по своему несчастные, они выучились алгоритмике на высокоуровневых
схемах, у них просто не было выхода, сами заформолизовать не смогли (ну не Кнуты, что поделаешь)
а научится было негде, кроме как учавствуя в разных компо. Да и в них научишся скорее дискретным
для х86 приёмам оптимизации (типа как сделать на байт-другой короче) чем навыкам реализации
алгоритмов на асме.
Юров первым попытался сделать это в отдельной книге. Ну не Паганини конечно :)
Складывается ощущение что это просто машинные листинги с какого-то сишного 16и разрядного
компилятора. Но другие то вообще не написали :)
То что он вообще попытался это сделать, уже хорошо.
Пока других не вижу.
По поводу "заумности" конечно очень смешная оценка, там базовые алгоритмы.
Ни одного сложного-комплексного.
То что даже это кажется "заумным" просто свидетельство как всё запущено у нас
с современными книжками.
На Западе есть книжульки типа "Inner Loops". Мы их всё дураками зовём, но у нас
пока не один умник не написал даже близко по качеству.
Вот.
А вообще, друзья, давайте ка больше писать о конкретных ошибках.
Сами знаете, когда начинаются "отстой" "класс" и т.п. - практическая польза
из топиков очень быстро улетучивается.
Есть совершенно практический смысл из - за чего это всё затевалось:
владельцы книг смогут использовать материалы из наших топиков как
приложения - исправления к своим изданиям.
И наиболее умные и добросовестные авторы - как руководство к действиям,
(если авторы к тому же и порядочные - надеюсь они упомянут людей
указавших на ошибки в своих изданиях).
Если конкретная составляющая не будет подавляющей -
читать наш флейм неинтересно будет ни пользователям книг,
ни их авторам.


Дата: Окт 1, 2003 13:38:05

The Svin
1. Даже если эти книги - чистая вода? Писать свое, а зачем, у меня, например, нет нижеперечисленных побудительных причин :)
2. Насчет денег - вопрос спорный, но ни доказать, ни опровергнуть нельзя. Из причин может быть еще необходимость получения научной степени, например.
По защите Юрова:
1. Ну, и толку в его справочнике, если там столько ошибок? Проверять знания тех, кто и так это знает? Лучше тогда уже мануалы интела глянуть, если есть необходимость.
2. Имхо, алгоритм сначала должен быть максимально доступно объяснен, а потом уже код. Мне, например, без разницы, на каком языке пример будет, но пару раз выходило так, что я прочитал его описание у Юрова, ничего не понимал, брал либо чужие сорцы (сишные, как правило) или реверсировал скомпилированное, и понимал все гораздо четче. Хотя это может я такой :)
Опять же, я фактически асм начал учить благодаря книге Свана - там все гораздо понятнее описано (как для начинающих особенно).

А вообще, друзья, давайте ка больше писать о конкретных ошибках.
Это правильно!


Дата: Окт 1, 2003 14:54:39

Лучше тогда уже мануалы интела глянуть, если есть необходимость.
Дружище, ну неудобный у них формат.
Он мне даже неудобный. Даже Яну неудобный.
(стервец кодирует бинарно уже шустрее меня)
Наиболее чёткий формат у Абеля в последнем издании.
Но у Абеля только целочисленные команды.

По поводу конкретных замечаний о издании которое ты начал пропалывать :)

стр. 12. Предисловие
Цитата:

Система команд микропроцессора Pentium III включает более 360 комманд


Коментарий:
Очень любопытный вопрос. А как вообще эти команды считать?
Вопрос очень интересный для тех кто понимает разницу между опкодом и мнемоникой.
Для справки:
IA-32 Intel ® Architecture
Software Developer’s
Manual
Volume 2 :
Instruction Set Reference

Содержит наиболее полный референс для команд Pentuim III.
В разделе где непосредственно находится описание и кодирование комманд ровно 400 статей. Типа AAA, AAD и т.п.
При этом все, например, JCC или CMOVCC,SETCC группируются
в одну статью, но различаются, например,MOV и MOV to\from Crx,...DRx.
Дело в том, что если считать по мнемоникам, то их больше 360. Если считать что в каждой статье интела выделена отдельная сущность как команда, то их тоже больше.
Наконец если считать что является уникальной сущностью - ID команды - опкодам, то их намного больше. Для проца
mov где операнды лишь регистры и память - это одна сущность, а где reg,imm - уже совсем другая. Речь подчёркиваю только об ID а не вариациях во вспомогательных байтах или даже вариациях битов w,d,s в блоке кода.

Для меня тут вопрос остаётся до конца не ясным - как пересчитать команды :)
Но какой из описанных принцип не используй - их больше 360и получится.


Дата: Окт 3, 2003 08:26:38

стр. 19. Описание процессоров 4го поколения.
Цитата:

"..i4004 мог производить 4е основные арифметические операции.."

там же чуть ниже:

"..i8008 (1972). Это процессор имел довольно развитую систему команд и умел делить числа."


Вопрос:
Почему в последнем случае особого сказано что i8008 "умел делить числа".
Ведь и про i4004 сказано, что он мог производить 4е основные арифметические
операции. Или Юров не относит деление к основным четырём? Тогда что включают
в себя упомянутые "4е основные арифметические операции"?


Дата: Окт 3, 2003 09:13:06

стр. 19. Описание процессоров 5го поколения
Цитата:

В 1976 году фирма Intel закончила разработку
16-разрядного микропроцессора i8086.


Вопрос:
Что вызывает у меня сомнение год появления.
Мне помнится 78\79.
Кто-нибудь может прояснить вопрос?


Дата: Окт 3, 2003 18:18:37

стр. 20. Описание возможностей 80386
Цитата:

...преобразование линейного адреса в физический, а также страничное
преобразование адреса..


Замечание:
Непонятно откуда тут появилось "а также",
страничное преобразование и есть преобразование линейного адреса в физический.


Дата: Окт 3, 2003 18:24:45

стр. 20.
Цитата:

Вскоре после микропроцессора i386 появился i486.


Замечание:
"Вскоре" случилось аж через 4и года - в 1989.


Дата: Окт 3, 2003 19:30:32 · Поправил: The Svin

стр. 20. Описание i486
Цитата:

В систему команд процессора
были добавлены новые команды. Все эти нововведения, наряду со значительным (до
133мг) повышением тактовой частоты микропроцессора


Замечание:

Никогда у i486 небыло таких частот.
Максимальные частоты были у i486DX4. Он причём вышел уже после Pentium.
Там были частоты 75-120mh.
А на момент выхода частоты были вообще намного меньше.
Вот справка:
486SLC 25-40
486SLC2 40-66
486SLC3 75
486DLC 25-40
486SX 16-33
486DX 25-50
487SX 25-50
486CL 25-50
486DX2 40-80
486DX4 75-120


Дата: Окт 3, 2003 20:11:00

В 1976 году фирма Intel закончила разработку
16-разрядного микропроцессора i8086.


Могу предположить, что Юров имел ввиду СБОРКУ, а не ВЫХОД процессора на рынок.


Дата: Окт 4, 2003 06:40:29

Я предположу, что фраза так спецально написана, чтобы понять её можно было по разному. У Юрова, к его чести, так построенные фразы встречают реже чем , к примеру, у Зубкова. Ошибки поэтому у него легче искать - сразу бросаются в глаза если написано однозначно.
Фактически же могу добавить - что во всей справочной литературе так и не смог обнаружить упоминание о мифическом достижении Intel в 1976 году, ни как сброки, ни как конца разработки, ни как какой-нить гениальной идеи стукнувшей в голову какому то разработчику Intel.
Откуда у Юрова этот 1976 появился всвязи с 8086 - ума не приложу.

Продолжение топика:
стр. 19. Историческая справка о процессоре i8008
Цитата:

...i8008 (1972). Это процессор имел
довольно развитую систему команд и умел делить числа. Именно он был использован
при создании персонального компьютера Альтаир, для которого молодой Бил Гейтс
написал один из первых своих интерпретаторов языка Бейсик. Наверное именно с
этого момента следует вести отчёт 5го поколения компьютеров.

Ошибка:
Альтаир был построен на базе i8080, а не i8008. i8080 вышел в 1974ом. Ни о нём ни о следующем его развитии i8085
Юров не упоминает.
А ведь первая персоналка была именно на i8080 не i8008,
и у нас были его аналоги если кто помнит - 580ИК80,КР580ВМ80. Умельцы стряпали в СССР и на их основе персоналки.
То что имено 8080 и 8085 были эпохальным (переломным) периоодом говорит и такой факт как Z80, который был ответом - вариацией фирмы Zilog, многие ещё помнят Sinclair, романтическое время надо признать :)

Ни слова у Юрова о 8080-8085,Z80.
А их заслуги (Альтаир к примеру) почему-то приписаны 8008.


Дата: Окт 4, 2003 09:11:14

стр. 21. Описание PentiumPro
Цитата:

Как и процессор Pentium, он имеет 8 кбайт кеш-память первого уровня
и 256 кбайт кеш-память второго уровня.


Ошибка:
должно быть ".. имеет 8*2=16кбайт кеш-память первого уровня.."

. 1 . 2 . 3 . >>


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