здрасти наткнулся тут на статейку http://ru.wikibooks.org/wiki/Ассемблер_в_Linux_для_программистов_C скомпилил хело ворлд - всё вроде работает хорошо. задался вопросом - если я знаю пхп, js и основы простого Си (год изучал в универе на заочке) - какова вероятность, что я могу, не изучая дальше Си, освоить ассемблер до того уровня, чтобы научиться писать демки? я имею ввиду ту красивую абстракцию, программируемую на аппаратном уровне. Или же мне всё равно стоит изучать дальше Си и сначала хорошо им овладеть, прежде чем лезть в ассемблер?
там пишется, что его проще освоить, если уже имеешь хоть какие-то представления об архитектуре, изучив Си. а я тока знаю как в Си память выделить под переменную, как указатели делать на эту память. С процессором вообще не знаком. Сейчас впервые прочитал про регистры. Смогу ли я написать демку?
Да, асм некак не зависит от С, а то что ты привел это просто асмовая вставка. По поводу демок http://wasm.ru/publist.php?list=19 - это маны по опенгл и директиксу почитай, разберись. Если что-либо не понимаеш в коде, то подтяни асм ещё. PS: Я например начинал изучать асм имея о С (++) лиш абстрактное понятие.
Там- это где? По моему источник не заслуживает доверия. Вообще, если ты знаешь принцип действия компиляторов и разбираешься в регистрах- бери книги-маны по нужному тебе языку и начинай с простейших задачек. Если будешь их щелкать, как орешки, то есть шанс что асм освоишь. С/С++ имхо, знать для этого не обязательно
спасибо за поддержку. ещё не пробовал писать демки. на асме то ниче не писал. просто хотел узнать, каковы шансы освоить его самому и не забить. а то щас давно уже тока и слышу что асм самый сложный язык. а я на обычном Си пишу с трудом
Я бы порекомендовал взять для себя асм, реализация которого есть и в винде, и в линуксе. Так можно избежать путаницы в синтаксисе- ведь тот же безусловный переход в разных асмах пишется по-разному.
Я тоже только начал учить асм, Си не требуется.. Асм совсем от всего отдельная тема и не с какими ЯП не пересекается, он сам по себе. Главное хорошо освоить строение памяти, процессора и вообще работу архитектуры.. Удачного изучения.
что значит "взять асм для линуха и винды сразу"? я вот взял пример из той вики: PHP: .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 и получил рабочую прогу в линуксе. а чем надо компилить и как писать, чтобы получился экзешник и для винды и для линукса? (чувствую ща жуткую херню спорол =\)
Никак! ... можно поступать как в джаве! Создается "песочница" внутри которой вызовы интерфейсных функций стандартизованы, назовем тех кто пишет код для песочницы ДИВЕЛОПЕРАМИ! А сама песочница соединена с системой стандартными функциями (в случае мастдая WinAPI) ! Тогда "песочные дивелоперы" могут писать код не думая о системе, главное чтоб добрые дяди установили песочницу на тех компах где будет работать проги песочных дивелоперов. а иначе каждая ось представляет свой набор функций для работы с системой и подменять их трудоемко (как впрочем и не нужно из-за перегруженности кода)! .... все это конечно лажа! Ведь с таким же успехом можно называть и php платформо независимым, раз код может исполняться и на линуксе с установленным php и на мастдае с установленным php!
Я бы посоветовал начинать учить ассемблер под конкретное семейство процессоров. Например IBM PC. Тогда основное что тебе понадобиться - это знание двоичной и шестнадцатеричной систем исчисления, а также архитектуры самого микропроцессора, его строение и принципов роботы на физическом и логическом уровнях. В универах это учат на 2 курсе =) Так ты сможешь понять почему код на ассемблере выглядит именно так, а не иначе и что именно этот код делает для получения желаемого результата. А уже после этого переходить на ОС и думать про то, как сделать что б работало на линукс\виндовс ... Хотя я понимаю, что сейчас очень модно кодить используя все готовое ('черные ящики'), но я не сторонник такого метода. Вот хорошая книжечка http://librussian.info/lib_page_93567.html
пока незачто, чесно) и если освоишь и найдешь ля себя полезное поверь не забьешь на него хотя бы потому что "Ассемблер - это звучит", я изучала ассемблер даже непредставляя что такое Си (но я знала Паскаль!!!) только единственно что ненравится так это компиляторы)) в каждом есть свои причуды!!! Удачи! Против трудностей - есть Античат!
не нужно подходить к изучению ассемблера как к чему-то необходимому. я сам прошел через этот этап и могу сказать точно - важнее всего знать о компьютере его внутреннее устройство (раз мы тут ассемблер обсуждаем давайте я тоже до уровня сис. блока приземлюсь), здесь нужно подходить не с обратной стороны как автор темы. хотите изучить устройство компьютера? так изучайте! читайте книжки полезные. а вот ассемблер в итоге сам приложиться и в последствие поймете, что его доскональное изучение для нормального человека (не считая крутых системных разработчиков которым это действительно нужно) вещь, вообще говоря, бесполезная. ну конечно не считая хэкеров, крэкеров и прочего ширпотреба. еще раз хочу сделать акцент на следующей мысли уместной далеко не всегда - тут важно знать только КАК это работает, а не заниматься этим и тратить время впустую.
ты еще реверсеров сюда прилепи и оправдаешь свой ник что до*** чего лицензионного стоит? или ты на линуксе? ПС: Модераторы простите за горячие высказывания но просто тупо день ппц
каких еще реверсеров? которые обитают здесь? несомненно, то чем они занимаются полная чушь. или ты считаешь копание с отладчиком умным и достойным занятием лишь для особо одаренных? человек с кучей свободного времени, которое он теряет на "развлечение" без намека на интеллектуальное развитие в моем представлении - бездельник. бездельники же никакой пользы не несут, и поэтому я без раздумия называю представителей подобного класса людей ширпотребом. лицензионного ПО лично у меня, к сожалению, нет. но по мне об этом думать и благодарить кого-то так же нелепо, как каждый день, проходя по дороге кричать спасибо асфальто-укладчикам.
кроме того что для разных процессоров разные ассемблеры, также для никсов и винды синтаксисы ассемблера немножко другие. так что ты определись под чем програмить будешь. а собственно зачем тебе асм? просто ради интереса? если да то лучше наверное не начинать этим заниматься.
каких еще реверсеров? которые обитают здесь? - то есть пост выше говорит именно о людях которые обитают здесь? и где ты это написал? - и с чего ты взял что кто то об этом будет громко кричать когда он обошел защиту мост вантед или фтп голд? думаешь ты один скромный? - копание с отладчиком и трата его свободного времени при этом ни тебя ни меня не касаются и я считаю когда человек сидит за Аидой или Олей - интелектуальной работой. - люди платят налоги, государство платит низкую зарплату тем кто его укладывает (хоть какие то но деньги) платили бы лучше - дороги были бы лучше. А 80 процентов взломанного софта построенно чисто на энтузиазме