Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Assembler

Страница: 1 | 2 |

 

  Вопрос: Кто нибудь использовал этот ассемблер? Добавлено: 04.11.04 05:59  

Автор вопроса:  CyRax  | Web-сайт: basicproduction.nm.ru | ICQ: 204447456 

Ответить

  Ответы Всего ответов: 30  

Номер ответа: 16
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #16
Добавлено: 09.11.04 14:54
 Я не вижу здесь описания разницы между машинными кодами и языком ассемблера. Это неверная выдержка из книги. Здесь нет информации по предмету.
 Уж поверь мне, машинные коды я знаю достаточно хорошо. Не отлично, но знаю.

Ответить

Номер ответа: 17
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #17
Добавлено: 10.11.04 02:32
Уж поверю, в таком случае всезнающий CyRax немогли бы вы мне объяснить, столь большую, столь принципиальную разницу? :)

2Почему не потеме то?
Я как раз показал из набора кодов, что разницы там особой не видно...

Ответить

Номер ответа: 18
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #18
Добавлено: 10.11.04 05:16
 Ну, ассемблер это всё таки автомат. И как бы его не "опускали", это такой же компилятор как и любой другой (исклюячая компиляторы для виртуальных машин). C++, Power Basic, Delphi - все компилируют по тому же принципу что и ассемблер. Разница только в том, что они кодируют последовательность операций, в отличие от ассемблера, привязанного к одной команде.
 Чем он занимается?

 Главное конечно преимущество - это автоматический подсчёт адресов. Т.е. он помнит длину каждой инструкции и для нахождения нужной складывает длины всех предыдущих.

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

 Следующее, ассемблер упрощает запись непосредственных чисел.
 Например из того же Абеля
 B8/34/12/0/0 MOV EAX,&H1234
 Не правда ли в машинных кодах несколько неудобно записать 16-ричное 1234 в 32-битный регистр? Во первых нужно прибавить недостающие нули(если длина источника меньше при длины приёмника), а а затем ещё и записать побайтно в обратном порядке.

 Подгонка операндов.
 При записи
 MOV AX,[EAX]
 ассемблер выбирает из своего списка подходящий по длине операнд:
 MOV AX,WORD PTR [EAX]
 Вроде бы ничего особенного, но опять же автоматизация кодирования.

 Ну и самое главное конечно - это отвлечение от чисел в пользу символических имён.
 Например во многих операциях с двумя операндами регистр EAX стоит особняком от других и имеет свои собственные коды для каждой операции:
 add eax,1 5/1/0/0/0
 add ecx,1 81/C1/1/0/0/0
 add edx,1 81/C2/1/0/0/0
 add ebx,1 81/C3/1/0/0/0
 Но это не всё. При различных длинах операндов уже используются другие опкоды.
 cmp ecx,edx 3B/CA
 cmp ecx,1 81/F9/1/0/0/0
 cmp ecx,[edx] 3B/A
 cmp cx,sp 66/3B/CC
 cmp cl,2 80/F9/2


 Главный недостаток, как и у любого компилятора, это то что возможности ограничены фантазией людей, создававших ассемблер.
 Но всё же я бы не рекомендовал программирование в машинных кодах на таких сложных процессорах как Intel. Его можно применять в менее сложных ИС. Хотя например тот же Крис Касперски со мной бы поспорил, но в конечном итоге он же хакер и ему нужно воевать с системой. Хотя может он и прав, кто знает :)


 По поводу правил кодирования пока не могу дать описание. Сам ищу. Мой предыдущий ассемблер, хоть и работает правильно, но всё же работает не по правилам. Я наверное буду полностью переписывать движок на Power Basic.


 PS: На будущее. Когда о чём то спрашиваешь не надо показывать свою крутизну. Можешь после. ;)
 А то отвечающий подумает что тебе его советы и нафиг не нужны.

Ответить

Номер ответа: 19
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #19
Добавлено: 10.11.04 07:39
По поводу вышесказанного вопросов нет, но вот последнее меня просто удивило
 
PS: На будущее. Когда о чём то спрашиваешь не надо показывать свою крутизну. Можешь после. ;)
 А то отвечающий подумает что тебе его советы и нафиг не нужны.

Перечитал весь этот топик, но так и не нашел ту фразу где бы я сказал что я крутой или что то, что могло бы навести на эту мысль...
Более того в твоем посте я нашел эту крутизну ;)
Я никому не собирался ничего доказывать, я лишь излогал свою точку зрения, возможно она не правильна, тогда меня надо поправить, я прав?
ЗЫ: и не так уж давно я изучаю Ассемблер, что бы уже понтоваться... да и не понтовый человек то я...

Ответить

Номер ответа: 20
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #20
Добавлено: 10.11.04 08:50

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

 Ты с умным видом говорил глупые вещи. Если бы это меня не касалось, то я бы просто подумал о каше в твоей голове и промолчал. Но так как твои действия, может и не намеренно, подрывают мой авторитет (а, всё равно этот CyRax всё неправильно говорит), то разумеется я пресёк это. А что собственно ты от меня хотел? Чтобы ты меня поливал грязью, а я молчал при этом?


Более того в твоем посте я нашел эту крутизну ;)

 Это враньё.

Ответить

Номер ответа: 21
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #21
Добавлено: 10.11.04 10:53
>да быстрее только уже машинные коды... :)
>Куда же еще гнаться то? CyRax блин скоростной >маньяк :))
Возможно это тебя подорвало?
Заявляю, что я говорил без всякой крутости эти слова...
> freeloader,
> Не надо делать различия между ассемблером и >машинными кодами если ты этих различий не знаешь. >Да и воообще я писал не про скорость выполнения, >а про скорость ассемблирования. Перечитай >внимательно.
Неправдо ли, слова высоко летящей птицы?

Ни в каком посте я не поливал грязью тебя и не задавался этой целью...

Ей богу мне это надоело, а тебе нет?
Давай жить дружно!

И еще раз на последок, на wasm.ru я появлялся с такими глупыми вопросами, НО тем не менее по возможности мне старались все разъяснить и доказать или по крайней мере натолкнуть меня самого на какой либо вывод...

Ответить

Номер ответа: 22
Автор ответа:
 ISpy



Разработчик Offline Client

Вопросов: 47
Ответов: 621
 Web-сайт: intermult.boom.ru
 Профиль | | #22
Добавлено: 10.11.04 11:49
Ну вы блин и устроили дискуссию :))

Ответить

Номер ответа: 23
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #23 Добавлено: 10.11.04 14:33
По поводу правил кодирования пока не могу дать описание. Сам ищу. Мой
предыдущий ассемблер, хоть и работает правильно, но всё же работает не по
правилам. Я наверное буду полностью переписывать движок на Power Basic.


CyRax? Я чего-то может не понял? Ты не знаешь как работает нормальный
ассемблер? :)
Тогда я очень удивлен! :)

По поводу метода: Я тебе хочу сказать что, таки, я имею исходники FASM
(похоже что они на FASM :)) - если ты не в курсе что это за вещь, то я тебе
скажу. Это вполне нормальный ассемблер. (OpenSource, какой-то :) )
Я-то в ассемблере еще не настолько парю чтобы свои ассемблеры писать :)
Могу послать тебе, если надо. Весит всего 1Мб, вместе с руководством
(200Кб), примерами и своими исходниками под DOS, Windows и Linux (!!!)

PS:
Если еще кому надо... спрашивайте у того, кому я пошлю - с инетом напряг
CyRax, по-моему я его на www.wasm.ru скачал...

Ответить

Номер ответа: 24
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #24
Добавлено: 13.11.04 13:18

Неправдо ли, слова высоко летящей птицы?

 Не правда ли крайняя степень неуважения?


CyRax? Я чего-то может не понял? Ты не знаешь как работает нормальный
ассемблер? :)
Тогда я очень удивлен! :)

 Знаю.

Ответить

Номер ответа: 25
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #25
Добавлено: 13.11.04 13:21

По поводу метода: Я тебе хочу сказать что, таки, я имею исходники FASM
(похоже что они на FASM :)) - если ты не в курсе что это за вещь, то я тебе
скажу. Это вполне нормальный ассемблер. (OpenSource, какой-то :) )
Я-то в ассемблере еще не настолько парю чтобы свои ассемблеры писать :)
Могу послать тебе, если надо. Весит всего 1Мб, вместе с руководством
(200Кб), примерами и своими исходниками под DOS, Windows и Linux (!!!)

 Нет, мне не надо. У меня есть куча мануалов от интела в формате PDF. В них всё есть. И даже очень непохо написано. Но тебе конечно их рановато читать.

Ответить

Номер ответа: 26
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #26
Добавлено: 13.11.04 14:57
Не правда ли крайняя степень неуважения?

Не правда

Ответить

Номер ответа: 27
Автор ответа:
 ISpy



Разработчик Offline Client

Вопросов: 47
Ответов: 621
 Web-сайт: intermult.boom.ru
 Профиль | | #27
Добавлено: 13.11.04 15:27
И даже очень непохо написано. Но тебе конечно их рановато читать.
Да, английский надо учить :))
Я вот думаю, что если посидеть в чатах, форумах на английском языке, то можно неплохо его выучить? Как думаешь, CyRax?

Ответить

Номер ответа: 28
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #28
Добавлено: 13.11.04 17:18
 ISpy,
 Ну в общем случае (в общечеловеческой практике) верно. Хотя конечно для каждого свой подход. Правила лучше всё таки наверное в учебнике почитать. Просто мне влом.
 Если что непонятно - спрашивай.

 Только тем кто спрашивает я хочу подсказать некоторые советы по общению со мной.
 1. Не надо меня грузить, это меня злит.
 2. Не надо мне доказывать свою крутость. Я тоже человек и как все имею самолюбие. Если ты действительно так крут в этой области скажи свои ники на PowerBasic.com и MasmForum.com, я за тобой понаблюдаю.
 3. Не надо переписывать мои примеры, а потом кричать что ты круче всех. Это просто скрыстое проявление эгоизма.

 По поводу вопроса о форумах на английском языке, который задал ISpy, из своего опыта (это моё личное мнение) могу сказать что наилучшей производтиельности обучения можно добится именно так. Англичане и американцы - это только часть посетителей этих форумов. Эти форумы являются как бы межнациональными и ответ на свой вопрос очень часто можно получить от жителя другой страны. Ну и обучение английскому, хотя для меня это не актуально.

 freeloader,
 Ладно, завязываем. Есть вопросы - задавай, есть советы - советуй. Второе предпочтительней ;)

Ответить

Номер ответа: 29
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #29 Добавлено: 13.11.04 18:28
Знаю.

CyRax, тогда я совсем не понял вот это твое изречение
По поводу правил кодирования пока не могу дать описание. Сам ищу. Мой предыдущий ассемблер, хоть и работает правильно, но
всё же работает не по правилам.


ISpy, тогда, IMHO, ты выучишь жаргонный "американский" :)

Ответить

Номер ответа: 30
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #30
Добавлено: 13.11.04 18:53

CyRax, тогда я совсем не понял вот это твое изречение

 Ну вообще то оно сделано по правилам, только эти правила знали те, кто мне их подсказывал (ну и PB(затем MASM32)+WDasm10). Поэтому и ассемблер рабочий получился. После ознакомления с мануалами интела всё стало на свои места и оказалось гораздо проще чем я думал. Однако предыдущая практика оказалась неплохим подспорьем в усвоении полной картины кодирования операций.
 В новый движок я собираюсь добавить инструкции сопроцессора и MMX. Про SSE-SSE3 подумаю, потому как вслепую кодировать их не хочется, а мой процессор эти инструкции не поддерживает.

 
Ну и собственно о цели этого движка. Как и предыдущий(на VB6) он разрабатывается не просто так, а для конкретной цели.
Если прошлый создавался для Local Assembler'а, то этот будет создан для нового полуязыка-полукалькулятора. Принцип таков. Будет TreeView со списком, сгрупированным по типам операций. Причём имена операций будут на русском языке. Выбираешь операцию из этого списка, а из другого операнды и добавляешь в некий третий список, который по сути и есть программа. Что то типа визуального ассемблера. Но раз слово "визуальный" уже используется Микрософтом для дизайна интерфейса, то наверное прийдётся подобрать другое слово.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам