Вопрос абсолютного новичка.

Тема в разделе "WASM.BEGINNERS", создана пользователем D34DC0D3_R, 14 июл 2017.

  1. D34DC0D3_R

    D34DC0D3_R New Member

    Публикаций:
    0
    Регистрация:
    14 июл 2017
    Сообщения:
    11
    Доброго времени суток.
    Вопрос слишком большой и правильно его сформулировать и уместить в заголовок я не смог. :dntknw:
    Суть, с чего стоит начать изучение Асма?(с некоторым пояснением ниже)
    Точнее, какой Асм выбрать, как я понял некие различия синтаксиса есть. Так же возможно какие-то Ассемблеры более не актуальны... В гугле инфы полно, но большинство информации 2000-2005 года, да и почти каждая ссылка использует различный Асм, а так же в каждой статье рекомендуют использовать именно тот, который используется в статье, по этому ступор я получил еще до скачивания компилятора :lol: . Так что основной вопрос что выбрать: MASM, FASM,GAS или что-то другое? Писать будут под виндой, для винды. Цель изучения асма исключительно саморазвитие.
    Далее вопрос, какую бы IDE выбрать, для удобства кодинга, компиляции по одной кнопке(ну это желательно), всякие визуальные редакторы окон значения не имеют, я более люблю на WINAPI чистым кодом))

    Ну и еще: какую бы литературу почитать для старта. Сразу оговорюсь, базовые знания ассемблера у меня имеются(но, та что бы писать код на чистом асме, не когда), знаю простейшие команды типо MOV, INC, PUSH,POP и прочее. Знаю про стэк, устройство памяти, регистры, сегменты... Имею примерное представление о вызове WINAPI из асма, о передаче параметров. Так же имеется не малый опыт в С++.
    При всем этого знаний не хватает(а возможно и соображения), что бы сесть и сходу писать что-то.
    Нужен некий "волшебный пинок", надеюсь на Вашу помощь :)
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    D34DC0D3_R,

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

    > знаю простейшие команды типо MOV, INC, PUSH,POP

    На самом деле знать эти инструкции - это знать их обработку, кодировку, это весьма сложно. Источником инфы являются доки разраба, это IA/AMD manual's, там описаны все подробности и главное псевдокод обработки, более полной инфы не существует, тоесть более полного и корректного источника инфы нет.

    > Точнее, какой Асм выбрать

    Сейчас я бы выбрал это https://www.purebasic.com/

    Будущее за подобными языками, имхо. Там инлайн асм, кросплатформ, 86/64 и главное продвинутый компиль, которому в отличие от задроства на си не нужно описывать мелкие детали.

    > Суть, с чего стоит начать изучение Асма?

    Суть в самом вопросе, для чего вам это нужно ?
    Сейчас асм это средство реализации зла.
     
    D34DC0D3_R нравится это.
  3. D34DC0D3_R

    D34DC0D3_R New Member

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

    Да, Вы правы, я не правильно выразился. Я имею представление об этих командах. Ранее ассемблер я использовал... даже наверно не так... Ранее с ассемблером я сталкивался только в реверсинге и то, мои поделки реверсингом назвать сложно, а именно примитивные хаки для офлайн игр/Примитивные боты для онлайн игр(типо получение своих координат, получение цели, получение координат цели, расчет угла поворота и т.д.), но реализовывалось это все на С++.

    Задачу выбора Вы мне уже облегчили, за что Вам огромное спасибо. :)
     
    Indy_ нравится это.
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    D34DC0D3_R,

    Голый асм вне ОС бесполезен. Суть в ином.

    > А вот желания хоть отбавляй.

    Если у вас есть влечение к знаниям, то оно заключается не в асме или какой то конкретной имплементации/языке/знании. Это влечение к абстракциям/алгоритмам. Не удивительно что вы написали выше прямо/открыто свои мысли. Это ценно.

    Уделите внимание на алгоритмы и матчасть по ним.
     
    D34DC0D3_R нравится это.
  5. DelAlt

    DelAlt Member

    Публикаций:
    0
    Регистрация:
    31 янв 2017
    Сообщения:
    62
    Indy_
    > Сейчас я бы выбрал это https://www.purebasic.com

    Человек писал на С++ и хочет попробовать x86-ассемблер под виндами. Самое время переходить на нестандартизированную проприетарную отрыжку BASIC'а, поддерживаемую одной компанией для сообщества размером в 2.5 инвалида. Прекрасный совет.


    D34DC0D3_R,
    Давно не писал какие-либо вещи целиком на ассемблере, но, думаю, картина примерно следующая.
    С учетом ваших интересов: MASM или FASM, скорее всего в пользу первого. При компиляции генерите отладочные символы в PDB-шник и дальше ковыряете где душе угодно: хоть Visual Studio, хоть WinDBG, хоть любой другой отладчик, который поддерживает использование отладочных символов. Какие-то специализированные IDE - не уверен, что есть в них смысл, но при поверхностном гуглении: VisualMASM.

    Если хочется код выше уровнем, в котором попробовать ассемблерные вставки: это Cи. Тут, насколько помню, в компилерах от MS поддерживаются только x86-инлайны, но не x86_64. А вот с GCC (MinGW) должно работать все. Дальше примерно по той же схеме: или PDB-шник и ковыряйте где хочется, или более родной для данного тулсета DWARF с отладкой в чем угодно, что умеет GDB в качестве бекенда. Есть достаточно приятный VisualGDB, который интегрируется со студией. Не уверен, что потребуется искать что-то еще.

    По изучению: мануалы Intel/AMD слишком хардкорно для изучения основ, лучше скорее в качестве справочника. Если уже имеется базовое представление: из русскоязычного я бы пробежался по какому-то актуальному изданию Зубкова (хотя, может меня поправят и подскажут что-то качественнее, тут дело вкуса), чисто краем глаза и похватать то, чего не достает. А дальше компилять есть чем, отлаживать есть где - практикуйтесь сколько влезет :)
     
    horpis_real, Коцит и D34DC0D3_R нравится это.
  6. D34DC0D3_R

    D34DC0D3_R New Member

    Публикаций:
    0
    Регистрация:
    14 июл 2017
    Сообщения:
    11
    Да действительно, взглянув на ПурБейсик, потыкав... м... сложилось такое впечатление, что это скорее удобная игрушка для автоматизации, на подобии AutoIT.

    Да вот буквально минут 10 назад скачал MASM и VisualMASM. Сразу приятно порадовала цветовая схема в IDE(MSVS подобная), тёмная, не раздражающая глаза.

    Да, в познавательных целях использовал, для восстановления оригинальной функции, после хука.

    Да, а вот этим я прямо сейчас и займусь :)) Огромное спасибо за развернутый ответ на все поставленные вопросы. Думаю это и был тот самый
    Который мне был нужен :) Благодарю.
     
  7. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    DelAlt,

    > Самое время переходить на нестандартизированную проприетарную отрыжку BASIC'а

    Вы можите предложить лучший компилятор ?

    > Если хочется код выше уровнем, в котором попробовать ассемблерные вставки: это Cи.

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

    > По изучению: мануалы Intel/AMD слишком хардкорно для изучения основ

    Первый том как раз и описывает основы и для этого предназначен. А всякие зубковы етц это мусор.
     
  8. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    DelAlt,

    Приведу вам пример. IDE для коденга контроллеров(microchip) поддерживает асм, си и басик. Но нет никакой нужды писать на корявом си, если есть бас и выхлоп одинаковый. Сишка это машинный язык, предназначенный для декомпиляции.
     
  9. DelAlt

    DelAlt Member

    Публикаций:
    0
    Регистрация:
    31 янв 2017
    Сообщения:
    62
    Indy,
    > А всякие зубковы етц это мусор.
    Для полного новичка, не желающего стать экспертом в теме, пойдет. Задорно, с примерчиками, сразу можно канпелировать и радоваться.

    > Сишка уже мало где используется, этот язык не предназначен для обычного коденга
    Все зависит от задач. Си - это такой "высокоуровневый ассемблер", когда лень (и правильно, что лень) строчить машкод по любому поводу, но при этом нужно поближе к железке. Вы вот когда-то не захотели выучить Си и что в результате? Больно смотреть.
     
  10. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    DelAlt,

    А на что именно больно смотреть, приведите пример.

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

    > Для полного новичка, не желающего стать экспертом в теме, пойдет.

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

    DelAlt Member

    Публикаций:
    0
    Регистрация:
    31 янв 2017
    Сообщения:
    62
    Indy,
    > А на что именно больно смотреть, приведите пример.

    Наработки в ассемблерных простынях, когда есть Си.

    > Сишные конструкции годятся только для дальнейшего анализа при декомпиляции, это не для использования человеком, имхо.

    Вы находитесь на другой планете. Могу в двух словах о состоянии дел на Земле: у нас тут считают, что Си хорошо подходит для низкоуровневого системного программирования и человеки его активно используют уже не один десяток лет.

    > для примера покажите что знаете вы, ваши какие то реализации

    Мое желание или нежелание в любой удобный для вас момент что-то показывать - оно никак не может быть аргументом в пользу каких-то ЯП.

    Edit: ну и в целом, там в скобочках уточнил, что если есть лучше для изучения, то пусть поправят. Мои книжки они из глубокого детства, всякие Абели и Хижняки :) А что там сейчас хз. Но маны Интела для поверхностного ознакомления - это явный оверкилл.
     
    Последнее редактирование: 15 июл 2017
  12. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    DelAlt,

    Вы не ответили, ваш ответ не имеет полезной нагрузки".
    Сейчас большая часть кода исполняется вообще под интерпретаторами(.net), о чём вы говорите не понятно. Только не нормальный разумом использует си.

    > Мои книжки они из глубокого детства,

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

    horpis_real Active Member

    Публикаций:
    0
    Регистрация:
    5 дек 2016
    Сообщения:
    141
    Я начал знакомство с ассемблером по Юрову. В принципе толковая , все разжованно, но в меру. Зубкова сложнее читать : в том же объеме немного больше инфы.
     
    D34DC0D3_R нравится это.
  14. DelAlt

    DelAlt Member

    Публикаций:
    0
    Регистрация:
    31 янв 2017
    Сообщения:
    62
    Indy,
    > Сейчас большая часть кода исполняется вообще под интерпретаторами(.net), о чём вы говорите не понятно.

    Контекст: низкоуровневое системное программирование. Какие еще дотнеты?

    > Только не нормальный разумом использует си.

    "Алло, мама, эти идиоты ВСЕ по встречке едут!"
     
  15. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    DelAlt,

    Человек задавший вопрос знает сишку. Вы не подумали почему тогда он спросил про асм ?
     
  16. D34DC0D3_R

    D34DC0D3_R New Member

    Публикаций:
    0
    Регистрация:
    14 июл 2017
    Сообщения:
    11
    Возможно Вы меня не правильно поняли, но про Асм я спрашивал, не в коем случае не как бегство от СИ) Как я уже говорил выше, изучение Асма исключительно для саморазвития. А так, как язык, меня полностью устраивают плюсы, даже более, из множества всех языков которые я пробовал, плюсы мне нравятся больше всего. И читая Ваши комментарии, совсем не понимаю из-за чего Вы так взьелись на си.
     
  17. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    D34DC0D3_R,

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

    Может вас проверить стоит ?
     
  18. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    [​IMG]
     
    D34DC0D3_R и Indy_ нравится это.
  19. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    yashechka,

    Шрифт мелковат.. :sarcastic_hand:

    Походу они создают темы не что бы получить ответ, а не ясно для чего. Нужно видимо запилить тесты для выяснения намерений.
     
    Mikl___ нравится это.
  20. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.708
    2-ое издание, Ассемблер для Windows. 2003. 2-е издание IMHO мне понравилось больше чем 3-ье и 4-ое. Много воды, опечатки, ошибки...
     
    D34DC0D3_R нравится это.