Re[3]: Ассемблер, куда он нужен?
От: SkyDance Земля  
Дата: 01.09.09 06:03
Оценка:
R>Еще вроде нужны драйверописцы, но тут похоже нужно будет немного другие темы подтягивать в поддержку.

Ассемблер в большинстве драйверов практически не применяется.
Re[3]: Ассемблер, куда он нужен?
От: SkyDance Земля  
Дата: 01.09.09 06:08
Оценка:
E>Вы имеете ввиду написание драйверов на Windows? Если да, то вы меня повеселили. Это можно сказать более или мение для одного типа драйвера но если переходишь на другой тип драйвера то приходится многое изучать сначала. <...>
E>Ну а если надо сделать какое нибудь не стандартное решение, которое выходит за понимание Microsoft что можно делать на Windows на системном уровне, то начинается такое веселье и такая "рутина" что мозги плавяться.

Позвольте с вами не согласиться. Да, я уже давно шашек в руки не брал, но по ситуации 99-2004 годов драйверы под винду (а тогда с ними было всё веселее, ибо существовала не только WDM, но и legacy *.vxd — вот уж где помойка-то была натуральная) писались без особых сложностей. И, реально, набив руку на сетевом NDIS-хукинг драйвере, без проблем получилось сделать и intermediate, и даже кое-какие допилки к miniport для SCSI. Честно сказать, слабо верится, что с тех пор что-то значительно изменилось.
Re[7]: Ассемблер, куда он нужен?
От: SkyDance Земля  
Дата: 01.09.09 06:11
Оценка:
IID>Нашёл, блин, чем похвастаться, гы! DDKшные примеры кишат ошибками и индусо-кодом может только чуть менее чем семплы в MSDN.

Подтверждаю. Впрочем, на то они и примеры, чтобы над ними подумать, и НЕ делать, как в них написано.
Re[4]: Ассемблер, куда он нужен?
От: мыщъх США http://nezumi-lab.org
Дата: 01.09.09 07:12
Оценка: +1 :)
Здравствуйте, Ulitka, Вы писали:

U>Здравствуйте, мыщъх, Вы писали:


М>> у асма есть своя ниша из которой его никто не вытеснит и которая весьма востребована.


U>Угу. Для вещей вроде "__asm__ __volatile__ ("rep; nop" : : );" самое оно

знать асм это одно, программировать на нем это другое. а без знания асма очень мало что можно вообще сделать. типичная стуация: релиз падает с воплем о критической ошибке, отладочная версия работает нормально, попытка добавки отладочной печати так же магическим образом нейтрализует ошибку. и что мы без асма делать будем? да и потом (и об этом уже говорили выше) не зная как все это устроено на низком уровне и во что превращается откомпилированный код -- сложно писать по уму и от души. вот от такого незнания мы до сих пор имеем кучу переменных размером в байт от которых тормоза жуткие в отличии от инта. а всего-то стоило загляднуть в код, сгенерированный компилятором.

сложнее найти область где знания ассембера совершенно невостребованы, где он до зарезу необходим вы со мной конечно можете не согласиться, но что это меняет? каждый остается при своем. своих взглядов и своей работе. и когда ракеты протыкают пространство, а толпы старших товарищей рекомендуют учить лисп и хаскель только хотя бы затем чтобы привить хороший стиль программирования на плюсах и расщирить кругозор, говорить о том что асм идет лесом просто смешно.

другой вопрос, что зная только ассемблер x86 работу с ним не найти
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: Ассемблер, куда он нужен?
От: HolyNick  
Дата: 07.09.09 17:55
Оценка:
Ассемблер используют(мне приходилось) для ускорения существующего кода, например.
Отладка на asm очень трудоемка поэтому его применение ограничено по сравнению с C++ , например, и другими языками высокого уровня.
Вообще стоит отталкиваться не от языка (это всего лишь средство), а от того какие задачи вам интересно решать.
Ваша формулировака "заняться низким уровнем", как мне кажется, говорит о том , что вы точно не представляете себе, что хотите.
Вообще, заморачиватся на ассемблере я бы не советовал.
Re[6]: Ассемблер, куда он нужен?
От: demi США  
Дата: 08.09.09 10:53
Оценка: 1 (1)
Здравствуйте, RedUser, Вы писали:

RU>Не, лучше так:


RU>
RU>void interchange_blocks(int *ptr, unsigned int b1_len, unsigned int b2_len)
RU>{
RU>    if (b1_len < b2_len)
RU>    {
RU>        interchange_equal_blocks(ptr, ptr + b1_len, b1_len);
RU>        interchange_blocks(ptr + b1_len, b1_len, b2_len - b1_len);
RU>    }
RU>    else if (b1_len > b2_len)
RU>    {
RU>        interchange_equal_blocks(ptr, ptr + b1_len, b2_len);
RU>        interchange_blocks(ptr + b2_len, b1_len - b2_len, b2_len);
RU>    }
RU>    else interchange_equal_blocks(ptr, ptr + b1_len, b1_len);
RU>}
RU>


Тупо циклический сдвиг сделать, ты что нагородил-то!
Не стыдно попасть в дерьмо, стыдно в нём остаться!
Re[9]: Ассемблер, куда он нужен?
От: demi США  
Дата: 08.09.09 11:03
Оценка:
Здравствуйте, Relati, Вы писали:

R>Здравствуйте, Pzz, Вы писали:


Pzz>>Если вы целитесь в программисты, лучше все же искать работу по созданию нового кода, пусть не очень сложного и не за очень большие деньги, чем по починке чужого кода. Ибо работа программиста заключается именно в создании кода.


Pzz>>Ищите, такие места есть. Многие большие компании, типа Интела и Гугля, сознательно набирают неопытных но талантливых студентов "на вырост" — при наличии ресурсов, в т.ч. временнЫх, это более надежный способ получить квалифицированного специалиста, чем попытаться найти готового. Поработаете годика два за умеренную зарплату, но зато уму-разуму научитесь.


R>Дык как бэ уже и не студент((( Но все равно спасибо! буду стараться найти что-то интересное...


В Питере есть контора, которая копается в WinCE. Да-да, именно копается в коде Micrsoft. Допиливают CE, под свои нужды собирают, считай, ось делают. Уровень системный, как сама понимаешь. Приходится на ARM-асме даже иногда пописать. А так — в основном си. Рутины кстати, нет. Ищи и найдешь!
Не стыдно попасть в дерьмо, стыдно в нём остаться!
Re[6]: Ассемблер, куда он нужен?
От: demi США  
Дата: 08.09.09 11:04
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, Relati, Вы писали:


R>>You make my day(c) Этой задачкой ))) Есть школьный вариант... завести второй массив )


Pzz>Ну еще одно наивное решение заключается в том, чтобы крутить массив по кругу, пока он не станет в правильное положение.


Циклический сдвиг на n можно сделать так же быстро как и циклический сдвиг на 1. За O(n).
Не стыдно попасть в дерьмо, стыдно в нём остаться!
Re[7]: Ассемблер, куда он нужен?
От: Pzz Россия https://github.com/alexpevzner
Дата: 08.09.09 11:30
Оценка:
Здравствуйте, demi, Вы писали:

D>Циклический сдвиг на n можно сделать так же быстро как и циклический сдвиг на 1. За O(n).


Ну да, собственно, эта задача и заключается в циклическом сдвиге на n. Т.е., вы свели задачу к самой себе
Re[2]: Ассемблер, куда он нужен?
От: мыщъх США http://nezumi-lab.org
Дата: 09.09.09 18:08
Оценка: 1 (1) +1
Здравствуйте, HolyNick, Вы писали:

HN>Ассемблер используют(мне приходилось) для ускорения существующего кода, например.

интересно, почему когда спорят о необходимости знания ассемблера то в основном говорят за написание кода на нем, когда на практике гораздо больше приходитя сталкиваться с чтениием. типа реверсинг, отладка краш дампов и т.д.

HN>Отладка на asm очень трудоемка

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

HN>поэтому его применение ограничено по сравнению с C++ ,

??? только из-за "сложности" отладки? не говорите ерунды. тем более сравнивая с плюсами, у которых совсем другой уровень абстракции и плюсов по сравнению с ассемблером намного больше.

HN>Вообще, заморачиватся на ассемблере я бы не советовал.

ну ассемблер это пропуск на системный уровень. без него там делать нечего.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[3]: #да, лишним не будет.
От: 8bit  
Дата: 09.09.09 19:50
Оценка:
Пригодится. Иногда даже там где, казалось бы, машинного кода и за 100 верст быть не должно.
Re[3]: Ассемблер, куда он нужен?
От: gear nuke  
Дата: 10.09.09 06:45
Оценка: 2 (2)
Здравствуйте, мыщъх, Вы писали:

HN>>Отладка на asm очень трудоемка

М>интересно. и в чем же ее трудоемкость.

Трудоёмкость в том, что приходится спуститься на более низкий уровень и мыслить регистрами, а не строчками высокоуровневого кода. Поэтому существующий асм оказывается дешевле переписать в С и поддерживать отрефакторенный вариант.

М> отладочную печать уже отменили?


Вот еще одина причина повышенной трудоёмкости — это всё добавляется руками. Фреймворков для автоматизации тестирования нет.

М> учитесь отлаживать и будет вам щастье. сложность отладки больше зависит от алгоритма чем от языка.


Ну да. Вот нашел ты ошибку в сложном алгоритме, и надо переписать часть кода. Теперь оцени требуемое время для асма и С.

HN>>поэтому его применение ограничено по сравнению с C++ ,

М>??? только из-за "сложности" отладки?

Думаю, имелось ввиду "сложность поддержки".

М> не говорите ерунды. тем более сравнивая с плюсами, у которых совсем другой уровень абстракции и плюсов по сравнению с ассемблером намного больше.


На плюсах можно писать на уровне ассемблера, если понимать последний, и если требуется. Поэтому rep nop остаётся одним из немногих применений последнего (могу добавить сюда еще .safeseh)

HN>>Вообще, заморачиватся на ассемблере я бы не советовал.

М>ну ассемблер это пропуск на системный уровень. без него там делать нечего.

Без него пару дней читается мануал...
.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.