LinuxForum.Fans
Тема

Программирование в ассемблере

Автор: serggeee 30 сообщений 7167 просмотров
#157911
serggeee написал:
и я не думаю что это Си короче в моих интересах разобраться с мельчайшими подробностями

:lol:

#157922
serggeee написал:
практически все здесь высказались что ассемблер не нужен а я открываю любой учебник и там первым делом пишется что ассемблер очень полезень и обладает большими возможностями, и считаю что программирую на любом высокоуровневом языке нужно понимать что происходит на самом деле

Не самая последняя цель автора учебника - привлечь внимание к своему труду. Понятно, что он будет убеждать Вас, что ассемблер необходим и полезен всякому и всегда. Но Вы ведь пришли сюда за советом? А Вам его уже дали, gramozeka во втором своём сообщении всё подробно изложил
И вообще, я солидарен с последним сообщением

#157992
serggeee написал:
практически все здесь высказались что ассемблер не нужен а я открываю любой учебник и там первым делом пишется что ассемблер очень полезень и обладает большими возможностями

э... любой Тьюринг полный язык имеет равные возможности - может ВСЁ. И ассемблер, и sed, и BrainFuck, и BASIC. Потому вас обманули. Теперь про обучение: сравните

BrainFuck написал:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.

Тоже самое на С

#include <stdio.h>
int main()
{
printf("Hello, World!\n");
return 0;
}

Что вам более понятно?
Ассемблер занимает промежуточное место по "понятности". Там тоже много букв.

Ассемблер обладает одним важным отличием от любого другого ЯП - он выполняется компьютером непосредственно, без перевода. Это якобы "быстрее" на первый взгляд. Но это вы так думаете. Это не так - ибо ваша реализация какой-нибудь функции заведомо хуже реализации специалистов Intel. Не? Потому, так никто не пишет. Особенно учитывая, что для нового CPU придётся писать новую программу, а для С можно её слегка подпилить, пересобрать, и продать ещё раз ;)

#157993
gramozeka написал:
ассемблер не "ненужен"

нужен иногда... для такого: http://linuxforum.ru/viewtopic.php?pid=167137#p167137
а так да, "ненужен". он нужен разве что для глубокого понимания, да и то, лишь после того, как есть хоть какое-то.
пойду плюсану...

#158301
Michail_Ul написал:
По поводу асемблера под линуксом есть очень хорошая статья, как и сам сайт. Всем рекомендую.

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

#158324
serggeee написал:
практически все здесь высказались что ассемблер не нужен а я открываю любой учебник и там первым делом пишется что ассемблер очень полезень и обладает большими возможностями, и считаю что программирую на любом высокоуровневом языке нужно понимать что происходит на самом деле

вы не правильно понимаете. Ассемблер полезно знать и использовать только в том случае если в этом есть реальная необходимость. Как правило это написание программ или даже отдельных модулей, функций программ где требуется быстродействие и компилятор не оптимально компилирует (ну это приближенно и упрощенно). При этом вам самому придется разруливать если вы захотите иметь свою программу на других платформах даже в относительно "простых" случаях.

Кроме того простой пример: времена 386ых и Turbo Pascal (с сями не сравнивал, т.к. писал тогда на паскале). Одному другу в научной работе переписал расчетную часть (в стоках не большой объем) на ассемблере. Скорость расчета увеличилась заметно: с 6 суток на паскале до нескольких часов на ассемблере. Пробовал сравнить позже в Delphi, кажеться 3. Компилятор на выходе выдал неплохой код. И выигрыш был уже не так заметен.

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

Если вы надеетесь править исходники имея только бинарник... ТО вам все равно надо знать программирование. Кроме того для этого нужно дизассемблиовать, а это: не любой бинарник вот так вот прямо сразу и сдасться, а главное даже если прога была написанна на ассемблере код после дизассемблера будет отличаться от исходного......

Короче если вы начнете с ассемблера - большой шанс, что просто потеряете время.

#158339
voral написал:
времена 386ых и Turbo Pascal (с сями не сравнивал, т.к. писал тогда на паскале). Одному другу в научной работе переписал расчетную часть (в стоках не большой объем) на ассемблере.

в тогдашних холиварах B-C++ vs B-Paskal было неопровержимо доказано, что на тот момент паскаль практически вообще НЕ оптимизирует, в отличие от С++. Потому - да, переписывание паскаля на ассемблер давало значительный прирост. Но это частный случай. И это было давно, и только для борланда.

С современным компилятором очень трудно тягаться - процессоры очень сложные, они выполняют множество операций одновременно, и основное время тратится не на сами операции, а на ошибки в планировании. Например: процессор начал выполнять Over9000 операций одновременно, и тут программист ВНЕЗАПНО поставил переход. Итог - Over9000 недоделанных операций псу под хвост :( Потому, сегодня, программы на асме выполняются практически всегда медленнее. Обычно даже медленнее скриптов :(

Удел ассемблера - это совсем уж примитивные ОЭВМ, ну и разбор полётов - почему компилятор выдаёт i-- - --i == 1, а не 2.

Войдите или зарегистрируйтесь, чтобы ответить.