и я не думаю что это Си короче в моих интересах разобраться с мельчайшими подробностями
:lol:
и я не думаю что это Си короче в моих интересах разобраться с мельчайшими подробностями
:lol:
практически все здесь высказались что ассемблер не нужен а я открываю любой учебник и там первым делом пишется что ассемблер очень полезень и обладает большими возможностями, и считаю что программирую на любом высокоуровневом языке нужно понимать что происходит на самом деле
Не самая последняя цель автора учебника - привлечь внимание к своему труду. Понятно, что он будет убеждать Вас, что ассемблер необходим и полезен всякому и всегда. Но Вы ведь пришли сюда за советом? А Вам его уже дали, gramozeka во втором своём сообщении всё подробно изложил
И вообще, я солидарен с последним сообщением
практически все здесь высказались что ассемблер не нужен а я открываю любой учебник и там первым делом пишется что ассемблер очень полезень и обладает большими возможностями
э... любой Тьюринг полный язык имеет равные возможности - может ВСЁ. И ассемблер, и sed, и BrainFuck, и BASIC. Потому вас обманули. Теперь про обучение: сравните
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.
Тоже самое на С
#include <stdio.h>
int main()
{
printf("Hello, World!\n");
return 0;
}
Что вам более понятно?
Ассемблер занимает промежуточное место по "понятности". Там тоже много букв.
Ассемблер обладает одним важным отличием от любого другого ЯП - он выполняется компьютером непосредственно, без перевода. Это якобы "быстрее" на первый взгляд. Но это вы так думаете. Это не так - ибо ваша реализация какой-нибудь функции заведомо хуже реализации специалистов Intel. Не? Потому, так никто не пишет. Особенно учитывая, что для нового CPU придётся писать новую программу, а для С можно её слегка подпилить, пересобрать, и продать ещё раз ;)
ассемблер не "ненужен"
нужен иногда... для такого: http://linuxforum.ru/viewtopic.php?pid=167137#p167137
а так да, "ненужен". он нужен разве что для глубокого понимания, да и то, лишь после того, как есть хоть какое-то.
пойду плюсану...
По поводу асемблера под линуксом есть очень хорошая статья, как и сам сайт. Всем рекомендую. smile
http://wasm.ru/article.php?article=asm_linux_for_c
По поводу асемблера под линуксом есть очень хорошая статья, как и сам сайт. Всем рекомендую.
только не вздумайте цитировать - ваша история обрывается на i80486, что какгбе намекает... (намекает на 90е годы прошлого века).
практически все здесь высказались что ассемблер не нужен а я открываю любой учебник и там первым делом пишется что ассемблер очень полезень и обладает большими возможностями, и считаю что программирую на любом высокоуровневом языке нужно понимать что происходит на самом деле
вы не правильно понимаете. Ассемблер полезно знать и использовать только в том случае если в этом есть реальная необходимость. Как правило это написание программ или даже отдельных модулей, функций программ где требуется быстродействие и компилятор не оптимально компилирует (ну это приближенно и упрощенно). При этом вам самому придется разруливать если вы захотите иметь свою программу на других платформах даже в относительно "простых" случаях.
Кроме того простой пример: времена 386ых и Turbo Pascal (с сями не сравнивал, т.к. писал тогда на паскале). Одному другу в научной работе переписал расчетную часть (в стоках не большой объем) на ассемблере. Скорость расчета увеличилась заметно: с 6 суток на паскале до нескольких часов на ассемблере. Пробовал сравнить позже в Delphi, кажеться 3. Компилятор на выходе выдал неплохой код. И выигрыш был уже не так заметен.
Ну и главное прежде чем садиться за ассемблер нужно вообще уметь программировать, хоть он и не так страшен как малюют, но вообще с 0... можно, но сложно.
Если вы надеетесь править исходники имея только бинарник... ТО вам все равно надо знать программирование. Кроме того для этого нужно дизассемблиовать, а это: не любой бинарник вот так вот прямо сразу и сдасться, а главное даже если прога была написанна на ассемблере код после дизассемблера будет отличаться от исходного......
Короче если вы начнете с ассемблера - большой шанс, что просто потеряете время.
времена 386ых и Turbo Pascal (с сями не сравнивал, т.к. писал тогда на паскале). Одному другу в научной работе переписал расчетную часть (в стоках не большой объем) на ассемблере.
в тогдашних холиварах B-C++ vs B-Paskal было неопровержимо доказано, что на тот момент паскаль практически вообще НЕ оптимизирует, в отличие от С++. Потому - да, переписывание паскаля на ассемблер давало значительный прирост. Но это частный случай. И это было давно, и только для борланда.
С современным компилятором очень трудно тягаться - процессоры очень сложные, они выполняют множество операций одновременно, и основное время тратится не на сами операции, а на ошибки в планировании. Например: процессор начал выполнять Over9000 операций одновременно, и тут программист ВНЕЗАПНО поставил переход. Итог - Over9000 недоделанных операций псу под хвост :( Потому, сегодня, программы на асме выполняются практически всегда медленнее. Обычно даже медленнее скриптов :(
Удел ассемблера - это совсем уж примитивные ОЭВМ, ну и разбор полётов - почему компилятор выдаёт i-- - --i == 1, а не 2.
вот вам дисассемблер ht http://drbatty.ru/files/325.png
http://hte.sourceforge.net/
Очень хороший ресурс по ассемблеру на линуксе. http://ru.wikibooks.org/wiki/Ассемблер_в_Linux_для_программистов_C