| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Религиозные войны > Машинный язык программирования |
| Автор: gepard 18.8.2004, 13:06 | ||
Из темы "Смеёмся вместе" страница - 3, цитата поста Baa:
Мне всегда было интересно: представляется ли возможным писать на машинных кодах? Хотел спросить у вас: "Где я могу почитать инфу на эту тему? Попробовать самому писать. Может быть знаете ссылки на уроки. Или принципы какие-то?" |
| Автор: Sardar 18.8.2004, 13:26 | ||
Ассемблер это инструкции процессора описанные мнемониками. К одной мнемонике может быть много различных опкодов(машинные команды) в зависимости от используемых регистров + данные рядом и т.д. Наверное писать в машинных кодах подразумвалось в hex редакторе набирать опкоды вручную
Нет никаких принципов и т.п. ибо это полный изврат |
| Автор: Akina 18.8.2004, 14:03 |
| gepard Одно из двух - либо речь не о РС-совместимых машинах, либо чел не понимает чего написАл... |
| Автор: gepard 18.8.2004, 14:12 |
| Это Baa-то не понимает? |
| Автор: GoodBoy 18.8.2004, 16:35 |
| gepard Как человек, писавший на машинных кодах могу тебе сказать - ПОЛНАЯ ЖОПА это!!!!! На асме - гемор писать, а в машкодах тем более!!!!! |
| Автор: oleg1973 18.8.2004, 18:00 |
| GoodBoy как чел пишущий на асме могу сказать- никакой там жопы нету и небыло а вот в машкодах жопа помнится был у меня компутер Радио86рк, так в журналах типа Радио публиковали програмки в виде дампа , нечто типа 00FA ED01 AC98 и так далее вот это была жопа набиваить их я представляю себе варез в таком виде //windows LongHorn final reliz: MZ0E45AD 46829300 00FEEFAA и так далее листов на 100000 |
| Автор: gepard 19.8.2004, 06:08 |
| Меня, как программиста интересует этот способ написания программ. GoodBoy Может быть дашь пару уроков? Или линки? |
| Автор: lynx_916 19.8.2004, 11:18 |
| gepard у моего друга есть МОДЕЛИСТ КОНСТРУКТОР. вот там я как-то видел. прийду к нему, возьму, отсканирую, запостю. |
| Автор: oleg1973 19.8.2004, 12:34 |
| gepard смысла нет писать в машкодах смотри предположим код d90a заносит а регистр ax число 10 тоже самое будет mov ax,0a на асме после компиляции получим d90a так что пиши на асме и не мучайся |
| Автор: gepard 19.8.2004, 13:26 | ||
| oleg1973 Я учить асм ещё не ьрался. И ещё раз повторяю:
Я не собираюсь кодить на этом языке всерьёз. МНЕ ПРОСТО ИНТЕРЕСНО! |
| Автор: oleg1973 19.8.2004, 15:19 |
| gepard ну так в чем проблема? идеш на интел.ком качаеш оттуда opcodes list и вперед там будет каждый опкод сопоставлен некой асм мнемонике |
| Автор: Sardar 19.8.2004, 22:46 |
| gepard а оказывается ты знаешь толк в извращениях |
| Автор: gepard 20.8.2004, 07:29 | ||
| oleg1973 Вот человеку обложку для диска доделаю и пойду поинтересуюсь у интелов на эту тему
|
| Автор: Zandr 20.8.2004, 09:11 |
| Писал когда-то для ZX Spectrum на asm'е (перед этим пробовал вбивать hex, но это было только в самом начале, когда о трансляторах с асма в код даже не подозревал.. Особенно весело относительные переходы в hex считать, путать старшие-младшие байты при забивании hex'a (кода). gepard, если хочешь попробовать, то как раз в машинный код лезть и не нада. Чтобы вбивать код, нужно знать асм (а еще иметь под рукой таблицу соответствия команд асма hex кодам, конвертер dec<->hex, еще че-нить), потому что асмовские команды однозначно отображаются в hex команды (и наоборот). Это одно и то же. Только код предназначен для процессора, а асмовские команды для человека. Блин, не знаю какие аналогии привести.. Off. Пытался без дизасма в досовской игрухе "вечную жизнь" сделать. Смотрел в hex редакторе код и заменял по очереди call xxx на nop'ы и пытался смотреть что переставало работать... Только, слезши со спектрума, не знал я бедный, что на x86 nop = 0x90 (если правильно помню) а не 0x00, как на Z80... |
| Автор: GoodBoy 20.8.2004, 12:55 | ||
gepard
К сожалению линков на такое у меня нет, а пару уроков дать не смогу по причине того, что писали мы под "Поиски" (теоритически это IBM-совместимый компьютер :-)))))))))))))))) А лет 10 назад пробовал как-то что-то писать в таких кодах для БК0010-01... Там было еще прикольнее, потому, что нужно было писать не в HEX а в OCT системе счисления... :-)))))))))))))))))))))))))) |
| Автор: CD20 19.8.2005, 07:00 | ||
| Я вот тоже начал учить асм и решил разобраться в машинных кодах. Стало ясно, что они вычисляются определённым образом. Вот, что я смог пронаблюдать:
Но они меняются в различных ситуациях, хоть и не сильно. Кто-нить знает по каким лагоритмам они меняются?!!! |
| Автор: CD20 19.8.2005, 07:29 |
| PS Наверное, лучше будет перенести это в раздел "асма и прочих вопросов." |
| Автор: setq 19.8.2005, 09:47 |
| в intel та часть команды, в которой находится код операции может содержать в себе биты, которые говорят что-то об операндах. алгоритма не знаю, но это где-то описано 100 пд. |
| Автор: CD20 19.8.2005, 13:25 |
| Короче, пипл. Коды жёстко проставлены. То бишь: то, что я привёл таблицу - она верная! Есесно только не полная. |
| Автор: Akina 19.8.2005, 13:53 |
| Код команды формируется по не самому простому принципу... Перед командой может быть предикат - скажем переопределение сегмента операнда. Опкод команды может включать в себя биты, определяющие тип операнда и - для сегментных или битов флага - конкретное указание операнда. Затем идут данные - адреса и/или непосредственные значения. Подробнее - шагай на сайт Интела (или, если хочешь, АМД) и качай офигенного размеру PDF с названием типа "Intel Pentium IV opcode Datasheet"... чтиво на ночь лет на несколько. По сабжу. Я много написАл в свое врема программ в машинных кодах - для Электроники Д3-28. Однако там это было оправдано - набор команд весьма компактный (не RISC, но около того), нет такой развесистой клюквы регистров, плоская страничная память... АСМ-среды не было, а прилагаемый Барсик еле ворочался на самых простых вещах... даже ВТ-128С решал проблему лишь наполовину... а программы были такие, что обрабатывали массив данных по 3-4 месяца непрерывно - так что скорость работы была более чем критична. |
| Автор: Дрон 19.8.2005, 14:04 | ||
Года полтора назад в одной из своих программ на С++ для Windows реализовал code-injection машинных кодов -- просто создавался массив, в него записывались числа, устанавливалось разрешение на исполнение и вперёд Там разбиралось математичекое выражение и по нему строилась подпрограмма его вычисления. А поскольку это выражение нужно было считать около 50 раз в секунду -- то решение вполне оправданно. Добавлено @ 14:07 Как справочником пользовался описанием интеловского 486 процессора. Мне хватило Особенно понравилось то, что, например, при перестановки некоторых независимых инструкций местами можно получать выигрышь в быстродействии аж до 10% !!! |
| Автор: Mayk 20.8.2005, 05:51 | ||
У Зубкова в "Ассемблер для DOS, Win, Unix" указывается, что возможно до сделать ускорение на 200% |
| Автор: Mephistopheles 19.12.2005, 05:14 |
| Команда - слово - 2 байта. Формируется по битам. Вот, блин, где узнать: как? |
| Автор: batigoal 20.12.2005, 09:53 | ||
В справочных материалах по процессорам, по всей видимости. |
| Автор: rsm 20.12.2005, 11:05 |
| Любителям мышинных кодов посвящается цикл статей "Заклинание кода": http://wasm.ru/article.php?article=codech01 http://wasm.ru/article.php?article=codech02 http://wasm.ru/article.php?article=codech03 http://wasm.ru/article.php?article=codech04 http://wasm.ru/article.php?article=codech05 http://wasm.ru/article.php?article=codech06 http://wasm.ru/article.php?article=codech07 |