|
|
|
Канал Игры Мечты: «Подводные камни при изучении асемблера и его применение» |
|
|
Снуч
941 EGP
   Рейтинг канала: 1(9) Репутация: 232 Сообщения: 2696 Откуда: Ракслатенон Зарегистрирован: 09.08.2005
 |
|
1. кто изучал серьёзно асемблер. каких камней надо опасаться начинающему (в который раз. ага) изучать сию латынь програмирования?
2. как часто применяется асемблер при написании космосимов, да и прочих игрушек?
3. полезная вещь при доработке виндоуз под себя?
п.с. и , вообще, я правильно хоть канал выбрал для таких вопросов ?
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
1)надо знать хорошо какой-то язык программирования высокого уровня, а асм как то сам прийдет. Правда я никогда не писал на чистом асме, так что..
2)MMX SSE 3DNow - все это можно использовать только на асме (правда есть компилер Intel`овский - он сам переводит на эти инструкции, но лучше самому). Позволяет оптимизировать тугой код на несколько FPS
3)всмысле?
З.Ы. Ну можно еще в ЖК. Но после вчерашнего избиения флудеров там - не советую
_________________ MOV topka, C++ |
|
|
Снуч
941 EGP
   Рейтинг канала: 1(9) Репутация: 232 Сообщения: 2696 Откуда: Ракслатенон Зарегистрирован: 09.08.2005
 |
|
Jurec : |
надо знать хорошо какой-то язык программирования высокого уровня
|
да. с этими языками. не понятно уже что лучше учить. тем более компец у меня хилый. целерончик 366й помоему, надо ещё привезти из дому.
вобщем, гепотетически что-нибудь полезное написать на асме и чтобы работало в винде, неззависимо от версии. просто мне кое-что не нравится в интерфейсе винды, вот я и подумывал это переделать/доделать. или лучше СИ заботать или что-то ещё, на чём там это всё написано, кстати? (хотя всё-равно полезу в я ндексе, но спрошу, мало ли )
Jurec : |
Ну можно еще в ЖК. Но после вчерашнего избиения флудеров там - не советую
|
я так и подумал.
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Снуч : |
вобщем, гепотетически что-нибудь полезное написать на асме и чтобы работало в винде, неззависимо от версии. просто мне кое-что не нравится в интерфейсе винды, вот я и подумывал это переделать/доделать. или лучше СИ заботать или что-то ещё, на чём там это всё написано, кстати? (хотя всё-равно полезу в я ндексе, но спрошу, мало ли
|
Можно написать свой explorer хоть на VBasic`е. На асме ничего такого особого написать... хм.. ну дрова, хотя и те пишут часто на высокоуровневых языках.
_________________ MOV topka, C++ |
|
|
Снуч
941 EGP
   Рейтинг канала: 1(9) Репутация: 232 Сообщения: 2696 Откуда: Ракслатенон Зарегистрирован: 09.08.2005
 |
|
Jurec : |
хм.. ну дрова, хотя и те пишут часто на высокоуровневых языках.
|
мм.. может тогда лучше вирусняками заняться.
|
|
|
$Vanger$
245 EGP
   Репутация: 44 Сообщения: 445 Откуда: Минск Зарегистрирован: 30.08.2002
 |
|
1)всех подряд. Главная опасность - разувериться в собственных силах .
2)ассемблер в чистом виде сейчас почти не применяется. Его используют практически всегда для ускорения критических частей кода, да и те часто пишут на C.
3)можно, ибо потроха венды на ассемблере написаны. Реально - нет. Учи лучше мелкософтовскую .NET платформу, если уж так хочешь.
А если прикипел сердцем к асму - попробуй MenuetOS (www.menuetos.org). Вдруг понравится..
Насчёт компилера - Intel C Compiler - очень хорошая и правильная штука. Распространяется как плагин к Eclipse и Visual Studio. Даже получше gcc по части математики будет.
_________________ Head down, wings out, faster than sound |
|
|
Снуч
941 EGP
   Рейтинг канала: 1(9) Репутация: 232 Сообщения: 2696 Откуда: Ракслатенон Зарегистрирован: 09.08.2005
 |
|
$Vanger$ : |
А если прикипел сердцем к асму - попробуй MenuetOS (www.menuetos.org). Вдруг понравится
|
идея интересная. надо будет попробовать.
$Vanger$ : |
Насчёт компилера - Intel C Compiler - очень хорошая и правильная штука. Распространяется как плагин к Eclipse и Visual Studio. Даже получше gcc по части математики будет.
|
в Сях и Т.Паскале помню был TASM или что-то вроде того , а GCC это его продвинутый брат типа того?
На всякий случай, ни у кого случаем нету уже проверенных сцылок на данную тему?
|
|
|
Pavlon
80 EGP
 Репутация: 15 Сообщения: 107 Откуда: Киев Зарегистрирован: 18.06.2006
 |
|
Гы. Вспомнил как в своей первой проге на асме (бэбитайп в текстовом режиме) никак не мог поделить два числа
Всего Зубкова перерыл... А разобрался только когда получил официальную документацию от Интел
ИМХО, опасайся деления(целочисленного)
А вообще асм - это правельный язык
Незаменим если нужна супер скорость + супер маленький размер, хотя последнее нынче некритично.
Ну а если хочешь серьёзно подпилить винду под себя, то тебе ещё понадобиться изучить её потроха, вот тебе и прямая дорога на wasm.ru + есть замечательная книга Рихтера "Windows для профессионалов" (или что-то вроде того, за название не ручаюсь)
Если интересна тема взлома и защиты, почитай Касперского "Философия и техника хакерских атак", очень неплохая штучка
|
|
|
Снуч
941 EGP
   Рейтинг канала: 1(9) Репутация: 232 Сообщения: 2696 Откуда: Ракслатенон Зарегистрирован: 09.08.2005
 |
|
вот ведь. кто бы мог подумать. сижу на работе, лёгкое похмелье, лениво читаю вику на английском про х86 платформу и прочее введение, и что самое удивительное .... понимаю.
за список литературы спасибо. постараюсь найти со временем.
|
|
|
$Vanger$
245 EGP
   Репутация: 44 Сообщения: 445 Откуда: Минск Зарегистрирован: 30.08.2002
 |
|
Снуч : |
в Сях и Т.Паскале помню был TASM или что-то вроде того , а GCC это его продвинутый брат типа того?
|
Нет. GCC - это GNU C Compiler. Компилятор чисто для С.
_________________ Head down, wings out, faster than sound |
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
хм, ну ващето гцц это гнутая коллекция компайлеров, там те и плюсы и фортран, и есчо бог знает чего
_________________ This is what you get ...
(c) Radiohead |
|
|
Снуч
941 EGP
   Рейтинг канала: 1(9) Репутация: 232 Сообщения: 2696 Откуда: Ракслатенон Зарегистрирован: 09.08.2005
 |
|
Да, кстати, появился ещё такой вопрос: стоит ли вникать в суть CMOS(и прочих вариаций), RISC, CISC и TTA? то есть стоит ли поднимать знания по радиолабам?
|
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
кгхм, если хочешь изучать асм, для каждой из железяк тебе придётся изучать его отдельна
_________________ This is what you get ...
(c) Radiohead |
|
|
Снуч
941 EGP
   Рейтинг канала: 1(9) Репутация: 232 Сообщения: 2696 Откуда: Ракслатенон Зарегистрирован: 09.08.2005
 |
|
Sh.Tac. : |
для каждой из железяк тебе придётся изучать его отдельна
|
для каждого процессора, если быть точным. впрочем, думаю остановиться на последних версиях, ну и z80 и х86 - это святое.
|
|
|
Pavlon
80 EGP
 Репутация: 15 Сообщения: 107 Откуда: Киев Зарегистрирован: 18.06.2006
 |
|
Снуч, учи тот проц, на котором программить будешь. Думаю под пниобразные процы будешь полюбому
Так вот, поверь, одного защищённого режима тебе хватит на довольно длительный промежуток времени Поэтому лучше концентрируйся на чём-то одном.
|
|
|
Grebomet
1466 EGP
      Рейтинг канала: 2(20) Репутация: 261 Сообщения: 4787 Откуда: Питербурх Зарегистрирован: 06.01.2003
 |
|
Снуч : |
1. кто изучал серьёзно асемблер. каких камней надо опасаться начинающему (в который раз. ага) изучать сию латынь програмирования?
|
1. Макроассемблера мелкософтовского (я серьезно).
У него слишком расхлябанный синтаксис, слишком много допущений и неточностей позволяет. Лучше юзать TASM в режиме ideal - там проверка синтаксиса построже, и программа получается более правильной.
2. Идиотцких книжек по асму.
Надо брать именно учебные книжки, и не из серии "асм за полчаса". Но и не забубенные талмуды. У меня такая... эээ... Автор, кажется, Том Сван, в названии есть "Turbo Assembler", большого формата такая, с непонятным зеленым рисунком на обложке (какая-то размазанная статуя гимнаста, что ли). Весьма толковая книжка, там и примерчики рисования под винду есть.
Снуч : |
2. как часто применяется асемблер при написании космосимов, да и прочих игрушек?
|
В настоящее время практически не применяется. Потому как экономически не выгоден. Ассемблерные вставки в критических участках кода - вещь исчезающая (вот в коде библиотек асм имеется, но при разработке игр свои библиотеки пишутся редко).
Снуч : |
3. полезная вещь при доработке виндоуз под себя?
|
Да как и любой инструмент - польза может быть... Хотя на практике пользы никакой.
Гораздо проще написать нужную тебе прикладуху или твикер на С++ или Дельфях, чем куролесить на асме: размер, конечно, будет в разы больше, но ты ведь чай не на 64 килобайтах памяти живешь, и программы не на ленте хранишь?
Писать на асме под винду - все равно, что шить себе платье из самотканой холстины: прикольно, экологично, дешево - но результат не стоит потраченных усилий.
Снуч : |
а GCC это его продвинутый брат типа того?
|
GNU compiler collection.
В большинстве случаев под этим подразумевается компилятор GCC/G++ (бесплатный, на котором ядро линукса собирают). Код генерит неплохой, но есть у него некоторые косячки.
Pavlon : |
ИМХО, опасайся деления(целочисленного)
|
Да все там нормально - просто не надо забывать, что делимое в два раза шире делителя.
Pavlon : |
Незаменим если нужна супер скорость + супер маленький размер, хотя последнее нынче некритично.
|
Насчет суперскорости - это шутка такая.
На самом деле современные компиляторы выдают достаточно быстрый код, вполне себе оптимизированный. Да, по размеру его можно ужать вручную, но при этом скорее всего снизится скорость выполнения.
Вообще, пытаться обогнать компилятор по скорости выполнения программы на Intel x86 - затея почти безнадежная (пробовал, хе-хе). А то, что асм - супербыстрый язык, уже давно скорее миф, чем реальность.
Снуч : |
впрочем, думаю остановиться на последних версиях, ну и z80 и х86 - это святое.
|
Асм для Z80 - ещё куда ни шло (в контроллерах важен размер, да и скорость выполнения ручками вполне можно оптимизировать).
А вот для x86 асм нужен в основном для битхаков всяких, чтобы в вируяяках разбираться и чтобы самому вирусы рисовать. Писать на асме серьезные вещи - баловство, а значит, несерьезное дело.
Pavlon : |
Так вот, поверь, одного защищённого режима тебе хватит на довольно длительный промежуток времени
|
А самое интересное, что он нафиг не нужен, этот защищенный режим - достаточно себе просто представлять, что такое плоская модель памяти. Переключать режимы винда тебе не даст, а свою ось писать ты вряд ли будешь.
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Grebomet : |
Ассемблерные вставки в критических участках кода - вещь исчезающая (вот в коде библиотек асм имеется, но при разработке игр свои библиотеки пишутся редко).
|
Я говорил - что MMX SSE 3DNow - можно использовать ТОЛЬКО с помощью асма/ассемблерных вставок (на самом деле еще Интеловский компилет умеет, но это как исключение). И это используется часто. В остальном- действительно, толку мало.
_________________ MOV topka, C++ |
|
|
Pavlon
80 EGP
 Репутация: 15 Сообщения: 107 Откуда: Киев Зарегистрирован: 18.06.2006
 |
|
Grebomet : |
Pavlon : |
Незаменим если нужна супер скорость + супер маленький размер, хотя последнее нынче некритично.
|
Насчет суперскорости - это шутка такая.
На самом деле современные компиляторы выдают достаточно быстрый код, вполне себе оптимизированный. Да, по размеру его можно ужать вручную, но при этом скорее всего снизится скорость выполнения.
Вообще, пытаться обогнать компилятор по скорости выполнения программы на Intel x86 - затея почти безнадежная (пробовал, хе-хе). А то, что асм - супербыстрый язык, уже давно скорее миф, чем реальность.
|
Ну, вообще ты прав конечно Эт раньше легко было комманды по конвеерам ракидать. Но зато, по размеру, имхо, никакой компилер не обгонит. Асм всё-таки асм. А так, конечно, это всё больше и больше баловство. Очень узкая часть осталась для него. Да и то в основном вирусняки, хак и всё что с ними связанно.
Grebomet : |
Писать на асме серьезные вещи - баловство, а значит, несерьезное дело.
|
Угу, согласен.
Grebomet : |
Pavlon : |
Так вот, поверь, одного защищённого режима тебе хватит на довольно длительный промежуток времени
|
А самое интересное, что он нафиг не нужен, этот защищенный режим - достаточно себе просто представлять, что такое плоская модель памяти. Переключать режимы винда тебе не даст, а свою ось писать ты вряд ли будешь.
|
Ну почему? Очень нужное знание, для всякого рода хаков. Например, если хочешь сдампить процесс, а никак не получается. Тут-то тебе и поможет знание, к примеру, страничной адресации. Дампим "изнутри" и всё ок. Или наоборот, если нужно какуб-то хитрую защиту сделать. Ребята из Старфорс очень хорошо знают как защищённый режим так и ядро Винды, без этого им мегазащиту не сделать.
Ну а в серьёзных проектах даже не знаю где можно асм использовать. Если ты, конечно, не затеял какую-то системную штуку, типа своей ОС Использование в маленьких критических секциях ничего не даст. Такие секции можно и на С написать с оптимизирующим компилером. Если всё прогу спроектировать и написать на асме тогда да, возможно что-то дало бы (причём в основном не защёт самого асма, а защёт "правильного" программирования), но это несерьёзно хотя бы потому, что писать такую программу ты будешь очень долго, а выигрыш если и будет, то мал.
Короче, для простых смертных асм = хак, имхо конечно.
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Pavlon : |
Использование в маленьких критических секциях ничего не даст
|
Даст. +7 ФПС - когда я переписал системы частиц на асм (И +20 ФПС, когда я переписал на вершинные шейдеры )
_________________ MOV topka, C++ |
|
|
Grebomet
1466 EGP
      Рейтинг канала: 2(20) Репутация: 261 Сообщения: 4787 Откуда: Питербурх Зарегистрирован: 06.01.2003
 |
|
Jurec : |
Я говорил - что MMX SSE 3DNow - можно использовать ТОЛЬКО с помощью асма/ассемблерных вставок
|
Можно.
Вопрос - где?
Отвечу сразу - в коде, работающем с мультимедией (а это, в основном, графика - в играх-то).
Теперь посмотрим: где в коде правильно спроектированной игры идет работа с графикой? В библиотеке работы с графикой. Потому как если размазать этот код по всей игре, модифицировать её код будет практически невозможно.
Pavlon : |
Но зато, по размеру, имхо, никакой компилер не обгонит. Асм всё-таки асм.
|
В современных играх 99% объема поставки - графика, звуки, видеоролики и данные. Оптимизировать код игры по объему с помощью ассемблерных вставок - бесполезно (проще добавить в код 50 килобайт кода декомпрессора и ужать все данные каким-нибудь zip'ом - выигрыш будет измеряться многими мегабайтами).
Pavlon : |
Ну почему? Очень нужное знание, для всякого рода хаков. Например, если хочешь сдампить процесс, а никак не получается. Тут-то тебе и поможет знание, к примеру, страничной адресации.
|
Ну, для дампов памяти проще использовать готовые утилитки.
Кстати, вспомнил, для чего может понадобиться знание асма: для написания драйверов виндовых.
Pavlon : |
Если всё прогу спроектировать и написать на асме тогда да, возможно что-то дало бы (причём в основном не защёт самого асма, а защёт "правильного" программирования)
|
Оптимизирующие компиляторы иногда творят чудеса - то, что ты реализуешь на асме "в лоб", они оптимизируют алгоритмически (вынос константных вычислений за пределы цикла, например). И хотя код, может быть, и похуже качеством, алгоритм будет работать быстрее.
Jurec : |
+7 ФПС - когда я переписал системы частиц на асм
|
А если бы компилятор был "более оптимизирующим", вполне возможно, что ФПС бы не поднялся совсем.
Эх, watcom, watcom...
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
|
|
|
Канал Игры Мечты: «Подводные камни при изучении асемблера и его применение» |
|