С чего начать Asm?
, Знатоки помогите...
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.217.37] |
|
|
Перед отправкой сообщения внимательно прочтите правила раздела!!!

С чего начать Asm?
, Знатоки помогите...
|
Сообщ.
#1
,
|
|
|
|
Хочу начать изучение Assembler'а.
![]() Книг у меня навалом.Юров,Абель,Пирогов,еще какие-то... Но вот софта нет.И незнаю какой надо брать. Тот раз скачал MASM32,а в нем не компилилятся проги,которые были в книге. Какой софт нужен начинающему и какую к нему в придачу книгу взять? 1)Что искать. 2)Где искать.(если незнаете точного адреса,то просто загуглю сведения) Я запутался.Накачал софт всякий,а в нем не компилится. Спасибо. |
|
Сообщ.
#2
,
|
|
|
|
Я начинал с TASMа. Нормальный простой асемблер.
|
|
Сообщ.
#3
,
|
|
|
|
http://wasm.ru - собственно то, с чего надо начинать. Книги которые у тебя есть - сойдут. Юров вроде ничо.
http://flatassembler.net - компилятор FASM. Его синтаксис отличается от масма и тасма но и работать с ним проще и приятнее. Удачи |
|
Сообщ.
#4
,
|
|
|
|
Не, лучше взять tаsm. Ведь в книгах все примеры расчитаны на него или на mаsm, который он полностью поддерживает. Да и развивается он не менее активно чем fаsm. А насчет проще, вопрос очень спорный.
Добавлено В тасме синтаксис намного проще и понятнее. Да и оптимизация отличная. |
|
Сообщ.
#5
,
|
|
|
|
Цитата AndNot @ В тасме синтаксис намного проще и понятнее. Да и оптимизация отличная. Не хочу спорить по этому поводу, пусть автор попробует разные компилеры и сам решит что ему удобнее. |
|
Сообщ.
#6
,
|
|
|
|
Это точно
|
|
Сообщ.
#7
,
|
|
|
|
Цитата Ct757 @ http://wasm.ru Скачал отсюда 9-версию MASM32. При установке ошибка вышла... Сейчас ищу на других сайтах. Цитата Ct757 @ Не хочу спорить по этому поводу, пусть автор попробует разные компилеры и сам решит что ему удобнее. Все дело в том,что действительно,в книгах все почти основано на MASM и TASM. Я и так не бум-бум в ассемблере,поэтому пока придется придерживатся того что используется в учебнике. |
|
Сообщ.
#8
,
|
|
|
|
Цитата MakedoneZ @ Все дело в том,что действительно,в книгах все почти основано на MASM и TASM. Это в принципе не важно, к отличиям быстро привыкаешь. И плюс когда переводишь с одного синтаксиса в другой, а не тупо переписываешь - как-то лучше осознаешь весь код |
|
Сообщ.
#9
,
|
|
|
|
мужиг, бери тасм и не парься.
|
|
Сообщ.
#10
,
|
|
|
|
Цитата Ct757 @ к отличиям быстро привыкаешь. И плюс когда переводишь с одного синтаксиса в другой, а не тупо переписываешь - как-то лучше осознаешь весь код ![]() Ага, а потом на форуме и появляются вопросы, связанные с несовместимостью всетаки лучше для начала освоить классику - масм и тасм. Хотя бы основы. |
|
Сообщ.
#11
,
|
|
|
|
Цитата MakedoneZ @ Цитата Ct757 @ http://wasm.ru Скачал отсюда 9-версию MASM32. При установке ошибка вышла... MASM32 от его изобретателя Хатча http://www.masm32.com/ При установке самое главное не мудрить с директориями, устанавливать по умолчанию в корень c:\masm32 иначе потом все инклуды провить прийдется. Мне фасм тоже понравился, можно создавать конструкции которые более читабельны ИМХО |
|
Сообщ.
#12
,
|
|
|
|
Цитата AlexJ @ Мне фасм тоже понравился, можно создавать конструкции которые более читабельны ИМХО Ну приведи мне к примеру макрос, который будет оптимизировать условные переходы, так же как и тасм Добавлено И заодно покажи мне как fаsm может определять какие инструкции какому процессору принадлежат |
|
Сообщ.
#13
,
|
|
|
|
Цитата AndNot @ Ну приведи мне к примеру макрос, который будет оптимизировать условные переходы, так же как и тасм FASM их и так оптимизирует... Цитата AndNot @ И заодно покажи мне как fаsm может определять какие инструкции какому процессору принадлежат А вот этого там нет. Я помнится спорил уже с кем-то. Ну приведут сейчас макрос для одной инструкции - и что? Это реализуемо в принципе. Только вот кто будет такие макросы для каждой команды набивать? Тогда уже проще самому следить... |
|
Сообщ.
#14
,
|
|
|
|
Цитата cppasm @ FASM их и так оптимизирует... То есть если джампу не хватает диапозона, то фасм сам его заменит на два? А как насчет 'LEA' и 'MOV reg, OFFSET'? Цитата cppasm @ Я помнится спорил уже с кем-то. Верно, там много недостатков фасма указано, и я там пару копеек вставил Ведь синтаксис масма/тасма (особенно у последнего) появился не с потолка, он довольно продуман, чего не скажешь о фасме.У фасма одно преимущество - развитый макроязык. Но одними макросами всего не решишь. Они не так уж и часто нужны. И лучше когда высокоуровневые средства уже встроены в язык, так удобнее. Впрочем это уже оффтоп. Меня просто поразило что в качестве учебного предлагают фасм, хотя он очень сильно отличается от масм/тасм, на которых все учебники базируются |
|
Сообщ.
#15
,
|
|
|
|
Цитата MakedoneZ @ Рекомендую начать с того, что ассемблер это не язык программирования, а компьютерная программа.Хочу начать изучение Assembler'а. Затем рекомендую задать себе вопрос - зачем. От этого многое зависит. |
|
Сообщ.
#16
,
|
|
|
|
Цитата AndNot @ То есть если джампу не хватает диапозона, то фасм сам его заменит на два? Нет, этого он не делает. Просто если переход попадает в границы -127..128 использует jmp short, иначе jmp near. Т.е. минимально возможную форму. А замену перехода на два я и в tasm не использую - не люблю когда компилятор умничает ![]() Цитата AndNot @ Впрочем это уже оффтоп. А чего оффтоп? Человек почитает и сам решение примет. Цитата ANDLL @ Рекомендую начать с того, что ассемблер это не язык программирования, а компьютерная программа. Да что вы говорите ![]() Если уж быть точным - то ассэмблер это как раз язык программирования, а то о чём вы говорите называется "транслятор с языка ассэмблер". |
|
Сообщ.
#17
,
|
|
|
|
Цитата ANDLL @ Затем рекомендую задать себе вопрос - зачем. От этого многое зависит. это очень верно подмечено! Цитата cppasm @ Если уж быть точным - то ассэмблер это как раз язык программирования а если ещё точнее, то это низкоуровневый язык программирования |
|
Сообщ.
#18
,
|
|
|
|
Цитата cppasm @ Как раз наоборот, ассемблер - это программа переводящая код, написанный на особом языке(языке ассемблера) в машинный код Если уж быть точным - то ассэмблер это как раз язык программирования, а то о чём вы говорите называется "транслятор с языка ассэмблер". Это общепринятая трактовка термина. Это вам скажет и википедия и любой другой качественный источник. |
|
Сообщ.
#19
,
|
|
|
|
MakedoneZ найди книгу Том Сван. Освоение Turbo Assembler, единственная, где ООП на тасме описано
|
|
Сообщ.
#20
,
|
|
|
|
Цитата ANDLL @ Как раз наоборот, ассемблер - это программа переводящая код, написанный на особом языке(языке ассемблера) в машинный код А язык тогда как по вашему называется? Язык ассемблера? А логика где? Или для вас и С - это компилятор, а язык называется "язык С"? |
|
Сообщ.
#21
,
|
|
|
|
Цитата cppasm @ вообще то да.Язык ассемблера? Цитата cppasm @ Логика в том, что вещи называются так как они называются. Нет ну правда, по твоему на википедии вот так взяли и опечатались? А заодно и Юров и иже с ним?А логика где? Цитата cppasm @ Нет. C это язык. И тем не менее ассемблер это программа. Удивительно, что человек с таким ником слышит это впервые Или для вас и С - это компилятор, а язык называется "язык С"? |
|
Сообщ.
#22
,
|
|
|
|
cppasm ANDLL
Мож хватит? Или начнем рассуждать над тем,можно ли IDE Delphi назвать средой программирования,или программой,или штукой которая организует создание приложений итд итп...Честно говоря все равно как и что называется,мне главное этим владеть. А нужен мне asm,в связи с тем,что занимаюсь криптографией. Некоторые участки кода требуют высокой скорости,что просто недостижимо в языках высокого уровня. Цитата tDCKWL @ найди книгу Том Сван. Освоение Turbo Assembler Спасибо,поищу. +++Скачал уже MASM32,нормалек.Приступим к созданию традиционного "Salam-Eleykim,World!" |
|
Сообщ.
#23
,
|
|
|
|
ANDLL, ну и бред
|
|
Сообщ.
#24
,
|
|
|
|
Цитата cppasm @ Просто если переход попадает в границы -127..128 использует jmp short, иначе jmp near. Странное решение. И ИМХО неверное. Вернее не всегда верное. Это глюк? Или разработчики поленились? Цитата cppasm @ А замену перехода на два я и в tasm не использую - не люблю когда компилятор умничает Обычно да. Но бывает что времени в обрез, и некогда возиться с такой мелочью. Или же пишешь "начерно", в целях "эксперимента", опять же не до диапозонов, не до оптимизации LEA и прочих прелестей, тем более знаешь, что тасм сам все оптимизирует. Цитата rikitikitavi @ а если ещё точнее, то это низкоуровневый язык программирования rikitikitavi, с одной стороны верно, а вот с другой стороны асм все больше и больше обрастает высокоуровневыми средствами. Немного медленно, но тенденция наблюдается. И насколько я знаю, уже предпринимаются попытки создать нечто новое, более удобное и в тоже время оставить низкоуровневые возможности. Цитата tDCKWL @ единственная, где ООП на тасме описано В доках к тасму 3.0 тоже доходчиво это разжевано |
|
Сообщ.
#25
,
|
|
|
|
Цитата AndNot @ В доках к тасму 3.0 тоже доходчиво это разжевано ![]() там режим masm, у Свана ideal |
|
Сообщ.
#26
,
|
|
|
|
Цитата AndNot @ Странное решение. И ИМХО неверное. Вернее не всегда верное. Это глюк? Или разработчики поленились? А что неверного? Если ты явно не указал short/near, то будет тот, у которого короче машинная команда. Т.е. short если допустимо. Если указано явно то будет либо тот переход который указан, либо ошибка в случае невозможности его сгенерировать. Цитата ANDLL @ И тем не менее ассемблер это программа. Удивительно, что человек с таким ником слышит это впервые Спорить по просьбам трудящихся прекращаю. А про ники я бы особо не возмущался... ПС: если тебе станет легче то на wiki можно за минуту всё поменять. ППС: чтоб тут не флудить больше - самый реальный выход - создай голосовалку и посмотрим на результаты. Добавлено Цитата MakedoneZ @ А нужен мне asm,в связи с тем,что занимаюсь криптографией. Некоторые участки кода требуют высокой скорости,что просто недостижимо в языках высокого уровня. ИМХО тогда стоит ещё скачать с сайта Intel или AMD мануалы по MX, SSE, SSE2 и т.д. SIMD команды должны ощутимый прирост дать, смотря правда какие тебе алгоритмы нужны. |
|
Сообщ.
#27
,
|
|
|
|
MakedoneZ,Абеля хорошая книга, а вообще посоветовалабы Кнут-Искусство программирования ну очень хорошая книга, там азы и архитектура и много много всего !
Цитата AndNot @ а вот с другой стороны асм все больше и больше обрастает высокоуровневыми средствами это уже типа следствия, а вообще я просто написала так как во всех книгах везде именно так и пишут |
|
Сообщ.
#28
,
|
|
|
|
Цитата cppasm @ Если ты явно не указал short/near, то будет тот, у которого короче машинная команда. Т.е. short если допустимо. Просто лень в справочники заглядывать, у нас near переходы когда появились? Добавлено Цитата rikitikitavi @ это уже типа следствия Увы, это уже вопрос выживания языка. Цитата rikitikitavi @ а вообще я просто написала так как во всех книгах везде именно так и пишут Это старые мастера писали. А за последнее время толковых книг по асму что то и не припомню |
|
Сообщ.
#29
,
|
|
|
|
Цитата rikitikitavi @ там азы Я бы не сказал что там азы. ![]() У меня есть все 3 тома.Требуется нехилое знаение матана. Благо учусь на Прикладной. Цитата cppasm @ ИМХО тогда стоит ещё скачать с сайта Intel или AMD мануалы по MX, SSE, SSE2 и т.д. SIMD команды должны ощутимый прирост дать, смотря правда какие тебе алгоритмы нужны. Я не особо силен в архитектуре процессоров,но кажется это все некие пртоколы... Так? Все дело в том,что чувствую использование этих протоколов сделает программу машинно-зависимой. У AMD ведь нет MX,SSE,SS2.У них если не ошибаюсь 3DNow! и прочее... ![]() Короче это все новая сфера,которую предстоит изучить. |
|
Сообщ.
#30
,
|
|
|
|
Цитата AndNot @ Просто лень в справочники заглядывать, у нас near переходы когда появились? С х386. Цитата AndNot @ Это старые мастера писали. А за последнее время толковых книг по асму что то и не припомню Зубков. "Assembler для DOS, Windows и Unix" - мне оч понравилась ![]() Цитата MakedoneZ @ Я не особо силен в архитектуре процессоров,но кажется это все некие пртоколы... Так? Все дело в том,что чувствую использование этих протоколов сделает программу машинно-зависимой. У AMD ведь нет MX,SSE,SS2.У них если не ошибаюсь 3DNow! и прочее... Это не протоколы - это новые машинные команды. Но в принципе да - зависимость будет. MMX поддерживают все начиная с Pentium MMX и AMD K6. Только врядли он тебе сильно поможет - это для параллельной обработки целых чисел. А в криптографии ИМХО такое не часто встречается. AMD поддерживает SSE, SSE2 начиная с Athlon, 3DNow! вроди на всех процах. Intel 3DNow! не поддерживает. Так что в принципе или писать несколько реализаций для каждого процессора, или отказаться от использования этих команд. А поддержку того или другого набора процессором в принципе в программе определять можно... |