Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Машинный язык программирования, что, как и где? 
:(
    Опции темы
CD20
Дата 19.8.2005, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.8.2005

Репутация: нет
Всего: 1



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

--------------------------INT--------------------------
|HEX|     |ASSEMBLER|
-------------------------------------------------------

CD X   int X

--------------------------INC--------------------------
|HEX|     |ASSEMBLER|
-------------------------------------------------------

40   inc ax
FE C0  inc al
FE C4  inc ah

43   inc bx
FE C3  inc bl
FE C7  inc bh

41   inc cx
FE C1  inc cl
FE C5  inc ch

42   inc dx
FE C2  inc dl
FE C6  inc dh

--------------------------ADD--------------------------
|HEX|      |ASSEMBLER|           |EXAMPLE|
-------------------------------------------------------

05 X X add ax, X (05 09 00  = add ax, 9)
04 X           add al, X (04 09   = add al, 9)
80 C4 X  add ah, X (80 C4 09    = add ah, 9)

83 C3 X X add bx, X (83 C3 09    = add bx, 9)
80 C3 X add bl, X (80 C3 09    = add bl, 9)
80 C7 X add bh, X (80 C7 09    = add bh, 9)

83 C1 X X add cx, X (83 C1 09    = add cx, 9)
80 C1 X add cl, X (80 C1 09    = add cl, 9)
80 C5 X add ch, X (80 C5 09    = add ch, 9)

83 C2 X X add dx, X (83 C2 09    = add dx, 9)
80 C2 X add dl, X (80 C2 09    = add dl, 9)
80 C6 X add dh, X (80 C6 09    = add dh, 9)

--------------------------SUB--------------------------
|HEX|      |ASSEMBLER|           |EXAMPLE|
-------------------------------------------------------

2D X X      sub ax, X (2D 09 00  = sub ax, 9)
2C X         sub al, X (2C 09   = sub al, 9)
80 EC X    sub ah, X (80 EC 09    = sub ah, 9)

83 EB X X  sub bx, X (83 EB 09    = sub bx, 9)
80 EB X     sub bl, X (80 EB 09    = sub bl, 9)
80 EF X     sub bh, X (80 EF 09    = sub bh, 9)

83 E9 X X  sub cx, X (83 E9 09    = sub cx, 9)
80 E9 X     sub cl, X (80 E9 09    = sub cl, 9)
80 ED X     sub ch, X (80 ED 09    = sub ch, 9)

83 EA X X  sub dx, X (83 EA 09    = sub dx, 9)
80 EA X     sub dl, X (80 EA 09    = sub dl, 9)
80 EE X     sub dh, X (80 EE 09    = sub dh, 9)

--------------------------MOV--------------------------
|HEX|      |ASSEMBLER|           |EXAMPLE|
-------------------------------------------------------

B8 X X mov ax, X (B8 09 00  = mov ax, 9)
B0 X           mov al, X (B0 09   = mov al, 9)
B4 X           mov ah, X (80 09    = mov ah, 9)

BB X X mov bx, X (BB 09 00    = mov bx, 9)
B3 X   mov bl, X (B3 09  = mov bl, 9)
B7 X           mov bh, X (B7 09     = mov bh, 9)

B9 X           mov cx, X (B9 09 00  = mov cx, 9)
B1 X   mov cl, X (B1 09  = mov cl, 9)
B5 X           mov ch, X (B5 09  = mov ch, 9)

BA X X       mov dx, X (BA 09 00    = mov dx, 9)
B2 X           mov dl, X (B2 09  = mov dl, 9)
B6 X           mov dh, X (B6 09       = mov dh, 9)

Но они меняются в различных ситуациях, хоть и не сильно.
Кто-нить знает по каким лагоритмам они меняются?!!!

Это сообщение отредактировал(а) CD20 - 19.8.2005, 07:25
PM MAIL   Вверх
CD20
Дата 19.8.2005, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.8.2005

Репутация: нет
Всего: 1



PS
Наверное, лучше будет перенести это в раздел "асма и прочих вопросов."
PM MAIL   Вверх
setq
Дата 19.8.2005, 09:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











в intel та часть команды, в которой находится код операции может содержать в себе биты, которые говорят что-то об операндах. алгоритма не знаю, но это где-то описано 100 пд.
  Вверх
CD20
Дата 19.8.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.8.2005

Репутация: нет
Всего: 1



Короче, пипл. Коды жёстко проставлены. То бишь: то, что я привёл таблицу - она верная!
Есесно только не полная.
PM MAIL   Вверх
Akina
Дата 19.8.2005, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Код команды формируется по не самому простому принципу...

Перед командой может быть предикат - скажем переопределение сегмента операнда. Опкод команды может включать в себя биты, определяющие тип операнда и - для сегментных или битов флага - конкретное указание операнда. Затем идут данные - адреса и/или непосредственные значения.

Подробнее - шагай на сайт Интела (или, если хочешь, АМД) и качай офигенного размеру PDF с названием типа "Intel Pentium IV opcode Datasheet"... чтиво на ночь лет на несколько.

По сабжу. Я много написАл в свое врема программ в машинных кодах - для Электроники Д3-28. Однако там это было оправдано - набор команд весьма компактный (не RISC, но около того), нет такой развесистой клюквы регистров, плоская страничная память... АСМ-среды не было, а прилагаемый Барсик еле ворочался на самых простых вещах... даже ВТ-128С решал проблему лишь наполовину... а программы были такие, что обрабатывали массив данных по 3-4 месяца непрерывно - так что скорость работы была более чем критична.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Дрон
Дата 19.8.2005, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 93



Цитата(Akina @ 19.8.2005, 14:53)
Однако там это было оправдано

Года полтора назад в одной из своих программ на С++ для Windows реализовал code-injection машинных кодов -- просто создавался массив, в него записывались числа, устанавливалось разрешение на исполнение и вперёд smile

Там разбиралось математичекое выражение и по нему строилась подпрограмма его вычисления. А поскольку это выражение нужно было считать около 50 раз в секунду -- то решение вполне оправданно.
Добавлено @ 14:07
Как справочником пользовался описанием интеловского 486 процессора. Мне хватило smile

Особенно понравилось то, что, например, при перестановки некоторых независимых инструкций местами можно получать выигрышь в быстродействии аж до 10% !!! smile


--------------------
Да. Именно так.
PM   Вверх
Mayk
Дата 20.8.2005, 05:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



Цитата
Особенно понравилось то, что, например, при перестановки некоторых независимых инструкций местами можно получать выигрышь в быстродействии аж до 10% !!!

У Зубкова в "Ассемблер для DOS, Win, Unix" указывается, что возможно до сделать ускорение на 200% smile Еще впечатляет, что ускорение можно получить добавив команду NOP smile.



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Mephistopheles
Дата 19.12.2005, 05:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегущий от света
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 15.11.2005
Где: Где нет света

Репутация: нет
Всего: 6



Команда - слово - 2 байта.
Формируется по битам. Вот, блин, где узнать: как?
--------------------
Ангелы и бесы кружат надо мной.Ангел или бес - делай выбор свой.Вспыхнуть огнём; вознестись до небесДелай выбор свой: ангел или бес?© Mephistopheles, бегущий от света.
PM MAIL WWW ICQ   Вверх
batigoal
Дата 20.12.2005, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 4
Всего: 151



Цитата(Mephistopheles @ 19.12.2005, 06:14)
Команда - слово - 2 байта.
Формируется по битам. Вот, блин, где узнать: как?

В справочных материалах по процессорам, по всей видимости.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
rsm
Дата 20.12.2005, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: 7
Всего: 62



Любителям мышинных кодов посвящается цикл статей "Заклинание кода": 1 2 3 4 5 6 7
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.