|
|
|
GoldFinch |
|
|||
Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
ДобренькийПапаша, я рад что вы в курсе что есть книги Таненбаума (я их не читал)
однако там либо нет того что надо, либо вы читали не то. Каково современное состояние дел? - асм применяется для программирования контроллеров, в винде - для системного программирования (как в никсах - хз), для написания модулей высокопроизводительных расчетов (хотя обычно это проблему решают закупкой более быстрого железа) Что подвластно асму сейчас, а что нет? - то же что и раньше, и то же что и будет всегда. асм - это минимальный уровень на котором можно писать программы вообще. любая программа, будучи скомпилированной состоит из инструкций асма. поэтому все что можно написать вообще - можно написать на асме. например асм императивен, поэтому функциональные языки компилятся в императивный асм код, поэтому на асме можно реализовать код, схожий по поведению с функциональным - оптимизация в ран-тайме, и т.п. на практике, ЯВУ как язык более высокого уровня позволяет в ряде случаев писать более компактный исходный код, за счет встроенных возможностей ЯВУ. Например если в каком-то ЯВУ есть оператор "написать_программу_с_окошком" то например файл с одним этим оператором уже будет программой, которая выводит окошко, при этом за этим оператором будут скрыты тысячи строк кода. Какие среды разработки существуют? - под х86 есть 2 компилятора masm и fasm, масм более старый, под него больше заголовочных файлов, однако масм не поддерживается майкрософтом как отдельный компилятор, а сторонняя сборка "masm32" (masm32.com) тоже не развивается в плане синтаксиса фасм (flatassembler.net) более новый компилятор, опенсорсный, активно развивается, во многом совместим с масмом. - из ИДЕ используют msvs, RadASM, обычно хватает простого редактора с подсветкой (в фасме есть встроенный) Написаны ли какие-либо библиотеки программного кода для асма (типа ATL, STL для C++, или скажем отдельно для работы над GUI)? - ATL и STL - библиотеки шаблонов, причем сам C++ кроссплатформенный, сравнение малость некорректно. асм не кроссплатформенный, т.к. зависит от конкретного семейства процессоров (х86-32, х64) стандартных библиотек для асма нет. т.к. асм - не язык как таковой, со своим стандартом, асмов много в masm32 есть библиотека masm32.lib схожая с stdlib в С, есть библиотеки для отладки и т.п. в фасме есть стандартная библиотека макросов, и есть пользовательские библиотеки при этом надо помнить что объектные модули (.obj) написанные на асме можно слинковать с объектниками на других ЯП, и из асма можно вызывать код написанный на любом другом ЯП. GUI на асме пишут либо в простых случаях, тогда обходятся winapi\com, либо в случаях когда стандартных подходов нет написание GUI на асме прироста производительности не дает, разве что уменьшает размер файла, впрочем того же можно добиться и на С(С++) - с ЧЕГО начать изучение асма 0) с выбора асма, например х86, например под винду 1) с изучения принципа работы процессора (регистры, память, стек и т.п., состояния, флаги, режимы адресации памяти, организация памяти) 2) с изучения ОС, поверхностно - если не надо работать с ОС, все равно надо знать организацию памяти в ОС, может надо знать про потоки и исключения, углубленно - если заниматься системным программированием - список литературы про процессор можно почитать что-нибудь наподобие "справочника по процессору 386", или по более современному про ОС (винде) надо читать Рихтера, windows via c\c++ |
|||
|
||||
nlp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 22.8.2009 Репутация: нет Всего: нет |
К мегапосту GoldFinch'а добавлю лишь, что новичку необходим редактор - простой в обращении, но с мощными возможностями подсветки синтаксиса ассемблера (чтоб ошибок было минимум, и так наделает кучу без опечаток).
Лучшей подсветки чем в Ogar Asm Editor я не встречал нигде. |
|||
|
||||
cardinal |
|
|||
Инженер Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 1 Всего: 99 |
nlp, ники на форумах принято выделять жирным...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Kipter |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Но-но-но! аккуратнее с таким заявлением то =) Безусловно конечно некоторые компилеры мб и генерят сперва асм код а потом его компилят в машинный. Но программа будучи скомпилированной не состоит из инструкций асма =) Асм создает тот же слой абстракции, и скрывает за мнемониками команд процессора - порой целый набор вариантов машинных команд =) вот в аттаче - пример инструкции MOV, из книги тайн =) для каждого типа операндов у инструкции mov свой машинный код =) причем эта таблица не полная и в какой то степени сжатая =) чтобы получить машинный код инструкции нужно либо к опкоду прибавлять некоторые значения (например номер регистра) либо после опкода установить управляющие биты например ModR/M и SIB, не зря же в х86 переменная длинна инструкций =))) Это сообщение отредактировал(а) Kipter - 7.5.2010, 05:52 Присоединённый файл ( Кол-во скачиваний: 23 ) 1.PNG 89,92 Kb |
|||
|
||||
Abyx |
|
|||
Опытный Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
Ты ошибаешься. Асм не создает никаких абстракций, и нет разделения понятий "инструкций асма" и "инструкций проца". Есть взаимно однозначное соответствие между байтами инструкции и ее текстовым представлением. Например "100: jmp near 105" соответствует E9 00 00 00 00 "100: jmp short 105" соответствует EB 03 Но это если писать инструкцию полностью. Большинство компиляторов асма, для удобства программиста позволяют опускать спецификаторы размеров операндов, и сами выбирают наиболее удачный вариант. Более того, некоторые компиляторы заменяют одни инструкции другими, например mov на lea. Но всегда можно написать полное название инструкции, чтобы компилятор скомпилировал нужную инструкцию. Наиболее наглядно это видно в тех ассемблерах где важна возможность указать конкретный размер инструкции - например в ассемблерах встроенных в OllyDbg, HIEW и т.п. |
|||
|
||||
Simpleton |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 23.12.2010 Репутация: нет Всего: нет |
Абсолютный новичок в асм но не нра.
|
|||
|
||||
fuckingniger |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 223 Регистрация: 1.10.2010 Репутация: нет Всего: 1 |
а есть интерпретатор, который работает с 64 битной виндой ???
|
|||
|
||||
fuckingniger |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 223 Регистрация: 1.10.2010 Репутация: нет Всего: 1 |
я пока мало чего понимаю в этом всём.Какую среду выбрать среду разработки для процессора 8086 ???
|
|||
|
||||
Marlik |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 212 Регистрация: 25.2.2007 Где: Рязань Репутация: нет Всего: нет |
Привет всем, народ на дворе почти 2013 год, кто использует какие проги для написания, под какие процы и архитектуры, где почитать и что, самое свежее. У меня Windows 7 64 bit. Хочется с чего-то начать а как стартануть не знаю. Спасибо.
|
|||
|
||||
xcislav |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
А я не могу создать на форуме тему(
Добавлено через 2 минуты и 35 секунд 00000000 BB0000 mov bx,0x0 00000003 31C0 xor ax,ax 00000005 CD16 int 0x16 00000007 B400 mov ah,0x0 00000009 2C30 sub al,0x30 0000000B 91 xchg ax,cx 0000000C 6800B8 push word 0xb800 0000000F 1F pop ds 00000010 31C0 xor ax,ax 00000012 CD16 int 0x16 00000014 8807 mov [bx],al 00000016 2E88063200 mov [cs:0x32],al 0000001B 43 inc bx 0000001C 43 inc bx 0000001D E2F1 loop 0x10 Вот программа печатаю - выводит посимвольно в видеобуфер (цикл столько сколько раз первый запрос указан). Но программа не работает. А должна писать после тела программы сразу байты и исполнять их после завершения цикла ввода. |
|||
|
||||
bernice |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 30.3.2013 Где: Тула Репутация: нет Всего: нет |
все что нравится-долго грузится)) |
|||
|
||||
Белоснежка |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Привет всем!
У меня вопрос. Может глупый. Нам сказали поставить готовую операционку на виртуальную машину. Операционка: Убунту, с насм и гцц. Ну и дали задачку, записать в регистр еах число, потом выдать это число наоборот в регистре еbх. Я для переворачивания использовала команду bswap. Я правильно понимаю, что если я скомпилирую этот код другим ассемблером, то он не будет работать? Но смена самой операционки ведь никак не повлияет на работу кода (если всё-таки скомпилируется), или? |
|||
|
||||
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |