PDA

Просмотр полной версии : возможно ли освоить ассемблер , имея навыки веб программирования?


Дикс
03.07.2008, 10:28
здрасти
наткнулся тут на статейку
http://ru.wikibooks.org/wiki/Ассемблер_в_Linux_для_програм истов_C
скомпилил хело ворлд - всё вроде работает хорошо.

задался вопросом - если я знаю пхп, js и основы простого Си (год изучал в универе на заочке) - какова вероятность, что я могу, не изучая дальше Си, освоить ассемблер до того уровня, чтобы научиться писать демки?
я имею ввиду ту красивую абстракцию, программируемую на аппаратном уровне.
Или же мне всё равно стоит изучать дальше Си и сначала хорошо им овладеть, прежде чем лезть в ассемблер?

Delimiter
03.07.2008, 11:06
ассемблер не имеет связи с Си , так что совершенно без разницы, кто сначала курица или яйцо.

Дикс
03.07.2008, 11:17
там пишется, что его проще освоить, если уже имеешь хоть какие-то представления об архитектуре, изучив Си.
а я тока знаю как в Си память выделить под переменную, как указатели делать на эту память. С процессором вообще не знаком. Сейчас впервые прочитал про регистры.

Смогу ли я написать демку?

!_filin_!
03.07.2008, 13:02
Да, асм некак не зависит от С, а то что ты привел это просто асмовая вставка. По поводу демок http://wasm.ru/publist.php?list=19 - это маны по опенгл и директиксу почитай, разберись. Если что-либо не понимаеш в коде, то подтяни асм ещё.
PS: Я например начинал изучать асм имея о С (++) лиш абстрактное понятие.

kakoy_nafig_nik
03.07.2008, 13:09
там пишется, что его проще освоить, если уже имеешь хоть какие-то представления об архитектуре, изучив Си.
Там- это где? По моему источник не заслуживает доверия. Вообще, если ты знаешь принцип действия компиляторов и разбираешься в регистрах- бери книги-маны по нужному тебе языку и начинай с простейших задачек. Если будешь их щелкать, как орешки, то есть шанс что асм освоишь.

С/С++ имхо, знать для этого не обязательно

Dober'man
03.07.2008, 13:27
!_filin_!
ассемблер не имеет связи с Си
Да, асм некак не зависит от С
Причем тут зависимость?!?!?! Асм зависит только от наличия ПК...

Дикс
03.07.2008, 13:29
спасибо за поддержку.
ещё не пробовал писать демки. на асме то ниче не писал.
просто хотел узнать, каковы шансы освоить его самому и не забить.
а то щас давно уже тока и слышу что асм самый сложный язык.
а я на обычном Си пишу с трудом

kakoy_nafig_nik
03.07.2008, 13:39
Я бы порекомендовал взять для себя асм, реализация которого есть и в винде, и в линуксе. Так можно избежать путаницы в синтаксисе- ведь тот же безусловный переход в разных асмах пишется по-разному.

0x22b
03.07.2008, 13:47
Я тоже только начал учить асм, Си не требуется.. Асм совсем от всего отдельная тема и не с какими ЯП не пересекается, он сам по себе. Главное хорошо освоить строение памяти, процессора и вообще работу архитектуры.. Удачного изучения.

Анархист
03.07.2008, 13:48
а то щас давно уже тока и слышу что асм самый сложный язык.


Brainfuck никто не отменял...

Jes
03.07.2008, 14:41
Brainfuck никто не отменял...

да , но как серьёзный язык он не неприемлем :)

Дикс
03.07.2008, 14:56
что значит "взять асм для линуха и винды сразу"?
я вот взял пример из той вики:

.data /* поместить следующее в сегмент данных */

hello_str: /* наша строка */
.string "Hello, world!\n"

/* длина строки */
.set hello_str_length, . - hello_str - 1

.text /* поместить следующее в сегмент кода */

.globl main /* main -- глобальный символ, видимый
за пределами текущего файла */
.type main, @function /* main -- функция (а не данные) */


main:
movl $4, %eax /* поместить номер системного вызова write = 4
в регистр %eax */

movl $1, %ebx /* первый параметр -- в регистр %ebx;
номер файлового дескриптора stdout -- 1 */

movl $hello_str, %ecx /* второй параметр -- в регистр %ecx;
указатель на строку */

movl $hello_str_length, %edx /* третий параметр -- в регистр %edx;
длина строки */

int $0x80 /* вызвать прерывание 0x80 */

movl $1, %eax /* номер системного вызова exit -- 1 */
movl $0, %ebx /* передать 0 как значение параметра */
int $0x80 /* вызвать exit(0) */

.size main, .-main /*


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

Delimiter
03.07.2008, 15:11
Никак!

... можно поступать как в джаве! Создается "песочница" внутри которой вызовы интерфейсных функций стандартизованы, назовем тех кто пишет код для песочницы ДИВЕЛОПЕРАМИ! А сама песочница соединена с системой стандартными функциями (в случае мастдая WinAPI) ! Тогда "песочные дивелоперы" могут писать код не думая о системе, главное чтоб добрые дяди установили песочницу на тех компах где будет работать проги песочных дивелоперов.

а иначе каждая ось представляет свой набор функций для работы с системой и подменять их трудоемко (как впрочем и не нужно из-за перегруженности кода)!


.... все это конечно лажа! Ведь с таким же успехом можно называть и php платформо независимым, раз код может исполняться и на линуксе с установленным php и на мастдае с установленным php!

ElteRUS
03.07.2008, 15:24
Я бы посоветовал начинать учить ассемблер под конкретное семейство процессоров. Например IBM PC. Тогда основное что тебе понадобиться - это знание двоичной и шестнадцатеричной систем исчисления, а также архитектуры самого микропроцессора, его строение и принципов роботы на физическом и логическом уровнях. В универах это учат на 2 курсе =) Так ты сможешь понять почему код на ассемблере выглядит именно так, а не иначе и что именно этот код делает для получения желаемого результата. А уже после этого переходить на ОС и думать про то, как сделать что б работало на линукс\виндовс ... Хотя я понимаю, что сейчас очень модно кодить используя все готовое ('черные ящики'), но я не сторонник такого метода.

Вот хорошая книжечка http://librussian.info/lib_page_93567.html

Flame of Soul
03.07.2008, 15:41
спасибо за поддержку.
ещё не пробовал писать демки. на асме то ниче не писал.
просто хотел узнать, каковы шансы освоить его самому и не забить.
а то щас давно уже тока и слышу что асм самый сложный язык.
а я на обычном Си пишу с трудом

пока незачто, чесно) и если освоишь и найдешь ля себя полезное поверь не забьешь на него хотя бы потому что "Ассемблер - это звучит", я изучала ассемблер даже непредставляя что такое Си (но я знала Паскаль!!!) только единственно что ненравится так это компиляторы)) в каждом есть свои причуды!!! Удачи! Против трудностей - есть Античат!

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

Flame of Soul
03.07.2008, 16:07
хэкеров, крэкеров и прочего ширпотреба

ты еще реверсеров сюда прилепи и оправдаешь свой ник
что до*** чего лицензионного стоит? или ты на линуксе?

ПС: Модераторы простите за горячие высказывания но просто тупо день ппц

g0nd0n
03.07.2008, 16:26
каких еще реверсеров? которые обитают здесь? несомненно, то чем они занимаются полная чушь. или ты считаешь копание с отладчиком умным и достойным занятием лишь для особо одаренных? человек с кучей свободного времени, которое он теряет на "развлечение" без намека на интеллектуальное развитие в моем представлении - бездельник. бездельники же никакой пользы не несут, и поэтому я без раздумия называю представителей подобного класса людей ширпотребом.
лицензионного ПО лично у меня, к сожалению, нет. но по мне об этом думать и благодарить кого-то так же нелепо, как каждый день, проходя по дороге кричать спасибо асфальто-укладчикам.

zythar
03.07.2008, 16:38
кроме того что для разных процессоров разные ассемблеры, также для никсов и винды синтаксисы ассемблера немножко другие. так что ты определись под чем програмить будешь.

а собственно зачем тебе асм? просто ради интереса? если да то лучше наверное не начинать этим заниматься.

Flame of Soul
03.07.2008, 16:44
каких еще реверсеров? которые обитают здесь?
- то есть пост выше говорит именно о людях которые обитают здесь? и где ты это написал?
- и с чего ты взял что кто то об этом будет громко кричать когда он обошел защиту мост вантед или фтп голд? думаешь ты один скромный?

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

z01b
03.07.2008, 16:49
- копание с отладчиком и трата его свободного времени при этом ни тебя ни меня не касаются и я считаю когда человек сидит за Аидой или Олей - интелектуальной работой.

Может Идой? =) Ты ведь не читаешь Айнтерактив? =)

GlOFF
03.07.2008, 16:52
возможно ли освоить ассемблер , имея навыки веб программирования?
Достаточно базового школьного образования!

Flame of Soul
03.07.2008, 16:55
Сила привычки) просто нравится.
MySQL - сиквель.
Sun - сун (а это наверное из-за немецкого)

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

Kaimi
03.07.2008, 17:01
Достаточно базового школьного образования!

Может и достаточно, но процесс изучения затянется надолго имхо...

Dober'man
03.07.2008, 17:07
каких еще реверсеров? которые обитают здесь? несомненно, то чем они занимаются полная чушь. или ты считаешь копание с отладчиком умным и достойным занятием лишь для особо одаренных? человек с кучей свободного времени, которое он теряет на "развлечение" без намека на интеллектуальное развитие в моем представлении - бездельник. бездельники же никакой пользы не несут, и поэтому я без раздумия называю представителей подобного класса людей ширпотребом.

Знаешь, тем кто не родился с компом в *опе приходится с чего-то начинать...
Вот тебе пример:
Я весь 6 и пол 7 класса проигрался с кубиком-рубиком...Ну согласись долбо***зм !!! А в 10 и 11 классах с меня всё пёрлись, когда я арифметические и геометрические прогрессии за пару секунд в уме считал (я в этом году закончил 11 класс), НО!!! Меня считали "ШИРПОТРЕБОМ" когда как даун возился с кубиком!!!
Если хочешь знать, то я тоже начинал с реверса и асма, и здал ЕГЭ по мат-ке на 98 баллов, а ЕГЭ по инф-ке на 96 баллов и мне прислали письмо из МФТИ с текстом о зачислении без экзаменов!!!

Дикс
03.07.2008, 17:14
я ваще хочу для начала понять общий синтаксис ассемблера.
в большинстве языков очевидно - как определить переменную, как функцию, а тут для меня слишком много загадок пока.
меня вот эти загадки и подталкивают на его изучение )

hoty
03.07.2008, 18:10
Сначала СИ потом Асм.
В универах так учат.
Сам сейчас буду Асм учить.

kakoy_nafig_nik
03.07.2008, 18:43
А с чего вы взяли что если в универе так учат, то это правильно?

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

0x22b
03.07.2008, 21:02
Сначала СИ потом Асм.
В универах так учат.
Сам сейчас буду Асм учить.

Логика не верна.. В С столкнешся с указателями, если до этого учил асм, то понимание указателей будет на много четче и пройдет на порядок легче, нежели сначала изучив С а потом Асм. Лучши учить оба паралельно..

hoty
03.07.2008, 22:09
to kakoy_nafig_nik :
А с чего вы взяли что если в универе так учат, то это правильно?

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

to 0x22b :
Логика не верна.. В СИ столкнешся с указателями, если до этого учил асм, то понимание указателей будет на много четче и пройдет на порядок легче, нежели сначала изучив С а потом Асм. Лучши учить оба паралельно..
Может оно и так, но мое мнение сначала понимание основ (процедуры, функции, массивы и др), а потом сложные языки программирования. В данном случае с СИ и Ассемблер, сначала СИ потом Ассемблер. Не "пыхтеть" ведь над Ассемблером, ради указателей на СИ?))

to ТС :
Если отлично владеешь PHP и sql, то СИ, скорее не нужен, т.к. понимаешь элементарные основы программирования.

K07TyaN
03.07.2008, 22:52
С и асм - совершенно разные вещи! Главное знать основы программирования (неважно какого языка) важна логика

а вообще я предпочитаю С + асм (inline assembler)

0x22b
04.07.2008, 01:33
to 0x22b :

Может оно и так, но мое мнение сначала понимание основ (процедуры, функции, массивы и др), а потом сложные языки программирования. В данном случае с СИ и Ассемблер, сначала СИ потом Ассемблер. Не "пыхтеть" ведь над Ассемблером, ради указателей на СИ?))


Хех, опять логика не правильная в корне.. Ассемблер ради указателей учить спору нет не нужно, но если начать изучать ассемблер, то кроме указателей придет понимание еще очень многих вещей, просто очень многих.. По этому либо просто Си, либо Асм потом Си, либо паралельно. Можно и сначала Си а потом Асм, и сидеть с таким лицом: "Как же я раньше не стал читать книги по асму, все было бы на много понятнее".


to ТС :
Если отлично владеешь PHP и sql, то СИ, скорее не нужен, т.к. понимаешь элементарные основы программирования.


А ну конечно, зачем нужен Си если PHP есть.. Для основ программирования есесно хватит. Но Си и PHP совсем разные вещи и так говорить, по меньшей мере не грамотно..

Jes
04.07.2008, 02:25
Если отлично владеешь PHP и sql, то СИ, скорее не нужен, т.к. понимаешь элементарные основы программирования.
абсолютно не согласен !

Речь идёт о высоком уровне (ооп) и низком...

Если вопрос звучал могу ли я научиться кодить на C# или Delphi(на уровне лего-компонентов) зная php , то да ...

Как раз Си (не С++ конечно) достаточно приближен к низкому уровню , чтобы хото частично понять основы...

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

вообще я до сих пор асм нормально не знаю ;)

hoty
04.07.2008, 11:33
Т.к. люди с репутацией на форуме говорят - "Сначала СИ, потом Асм", то думаю ТС тебе так и нужно поступить.

Delimiter
04.07.2008, 14:13
2 hoty

типа а мну не слушать??? 8)))))))))) Нука нука обьясните как вы репутацию связываете и с чем?

/// неужели обнаружили глубинную связь репутации и с СИ и с Ассемблером?


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

8)))

0x22b
04.07.2008, 14:17
to hoty Посты пожалуста не повторяйте свои, а то можно и за флуд огрести по той самой репутации. Третий пост об одном и том же, уже на флуд смахивает.

hoty
04.07.2008, 14:42
to Delimiter:
типа а мну не слушать??? 8))))))))))

хочется, чтобы меня слушали.
владею лишь Паскаль и СИ. сейчас надо Ассемблер учить. Поскольку знаю, что для Ассемблера нужны навыки основ программирования, то владея php (в моем случае СИ), можно начать изучение Ассемблера.
Т.к. ТС знает куда "копать" ), то считаю, Асм ему дастся, быстро.

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


/// неужели обнаружили глубинную связь репутации и с СИ и с Ассемблером?
Ну-уж не глубинную связь)) Если у участника форума большая репутация значит он делал полезные вещи на форуме (исходники, статьи). Соответственно, разбирается в языках программирования.

0x22b
Посты пожалуста не повторяйте свои, а то можно и за флуд огрести по той самой репутации. Третий пост об одном и том же, уже на флуд смахивает.

я прав "сначала php потом си), и Вы правы сначала Си потом Асм). Основы, то основы.
А слушать ТС думаю, будет тех у кого больше репутация - на подсознании больше доверия )).
Вот и написал: "слушай, тех у кого репутация выше".

Не вижу смысла накручивать большую репутация на форуме. Зачем она большая, если ничего не знаешь?)

Jes
04.07.2008, 15:34
Delimiter по поводу репы абсолютно прав ...

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

GlOFF
04.07.2008, 22:23
возможно ли освоить ассемблер , имея навыки веб программирования?
Достаточно базового школьного образования! :)
Можно и без него, мат. склад ума. :)

Дикс
06.07.2008, 16:51
а только потом сложные языки Ассемблер, php и базы данных.
сравнил )) с чего это пхп сложный язык? я его по книжке выучил дома

Может оно и так, но мое мнение сначала понимание основ (процедуры, функции, массивы и др), а потом сложные языки программирования.
я неплохо знаю пхп и основы Си. указатели, сортировки, структуры, деревья - уже изучал.
так что можно и асм начинать

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

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

Достаточно базового школьного образования!
Можно и без него, мат. склад ума.
склад ума у меня гуманитарный, я "пейсатель" :)
http://litprom.ru/list.phtml?userID=47546

astrologer
06.07.2008, 17:02
вот этого я и хочу. а что можно почитать про работу самого процессора? чтобы доступно. про его устройство. как ассемблер с ним "общается"?команда ассемблера = команда процессора

0x22b
06.07.2008, 17:27
вот этого я и хочу. а что можно почитать про работу самого процессора? чтобы доступно. про его устройство. как ассемблер с ним "общается"?

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

Exile1985
07.07.2008, 16:45
здрасти
наткнулся тут на статейку
http://ru.wikibooks.org/wiki/Ассемблер_в_Linux_для_програм истов_C
скомпилил хело ворлд - всё вроде работает хорошо.

задался вопросом - если я знаю пхп, js и основы простого Си (год изучал в универе на заочке) - какова вероятность, что я могу, не изучая дальше Си, освоить ассемблер до того уровня, чтобы научиться писать демки?
я имею ввиду ту красивую абстракцию, программируемую на аппаратном уровне.
Или же мне всё равно стоит изучать дальше Си и сначала хорошо им овладеть, прежде чем лезть в ассемблер?

НЕТ, пока мозги не появятся это НЕВОЗМОЖНО!!!

Developer
19.07.2008, 09:09
Причем тут веб-программировани, Си и Асм? Есть время и желание - все будет.

... и мозги )

geograph
19.07.2008, 15:31
Можно научится ездить на машине, если я умею ездить на велосипеде? :)