Придумай инструкцию x86!

Тема в разделе "WASM.HEAP", создана пользователем alpet, 22 июн 2005.

  1. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Это повод для самосовершенствования, не более. Всех дел не переделаешь. То, что вы относитесь к работе с ответственностью - это уже хорошо, ведь некоторые били на любую ответственность большой болт.
    А что вас смущает? Или вы считаете, что выполнение кода в произвольном месте - это норма? А если вы передадите управление на середину какой-то команды - ситуация изменится?

    Это вырожденная конкуренция с монополией сами знаете какой фирмы. Microsoft никогда не будет печься о качестве своей продукции, им нужно впаривать софт за неимоверные деньги, при чём это делать периодически раз в два-три года. Смысл что-то улучшать, если пипл и так хавает?
    Да осильте вы Perl, наконец. Там, как раз, можно регекспами файлы парсить.

    Да, системы контроля версий никто не отменял. Разверните у себя хранилище, и в любом случае вы можете откатиться до предыдущей версии.

    Дальше бред какой-то, чесслово.
    Может, вы не с той стороны к технологиям подходите? Или решаете задачи не теми средствами.
     
  2. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Да... Ребята, ребята!
    Или Вы меня не понимаете, или я - замкнутый аутист :)

    По-порядку:

    RAM-Disk в HTML - некий select-подобный список. Имеет свойство innerFile например.
    innerFile - Array массив, в котором перечисленны все файлы/каталоги. Скрипт видит в следующем виде:
    Код (Text):
    1. this.innerFiles = new Array
    2. (
    3.   {
    4.     "name": "Music",
    5.     "date": "12:12:12 12/12/2012",
    6.     "attr": "folder",
    7.     "data": new Array
    8.     (
    9.       {
    10.         "name": "..",
    11.         "date": "12:12:12 12/12/2012",
    12.         "attr": /*здесь указать на каталог-родитель не получится без алгоритмической рекурсивной ссылки */,
    13.         "data": ""
    14.       },
    15.       {
    16.         "name": "conyon.mid",
    17.         "date": "12:12:12 12/12/2012",
    18.         "attr": "normal",
    19.         "data": "base64, ..."
    20.       }
    21.     )
    22.   },
    23.   {
    24.     "name": "read_me.txt",
    25.     "date": "12:12:12 12/12/2012",
    26.     "attr": "normal",
    27.     "data": "Hello! World!!!<br/>This is RAM-Disk tag!"
    28.   }
    29. )
    и никакой реальной файловой системе ничем не угрожает. Пользователь может спокойно блуждать по мнимой файловой системе.
    Уникальная возможность: Контекстным меню кликнув на нужный пункт списка можно выбрать опции "Переименовать", "Вырезать", "Вставить", "Удалить", "Копировать", "Клонировать". При этом произойдёт лишь внутренняя реорганизация всего Array. А скрипт будет оповещён лишь абстрактно - onChange...
    Ещё в контекстном меню пользователь найдёт пункт "Извлечь". Это равносильно как у картинки "Сохранить как...". Открывается диалог с предложением выбрать имя сохраняемого файла и папки.
    При этом скрипт оповещён о действиях пользователя не будет, или будет, но абстрактно, как onSelect или onClick...
    Ещё можно взять любой файл проводника и перетащить его прямо в список файлов в окне браузера. Сразу произойдёт реорганизация Array, будет добавлена новая структура. А содержимое реального файла преобразуется в "data": "base64, ... etc"... При этом скрипт будет оповещён событием onChange.

    Таким образом, новый элемент - RAM-Disk на HTML странице никак не может стать потенциальной дырой в безопасности и защите. Так-как элемент управляется браузером, а скрипту лишь остаётся анализировать Array-структуру, не имея к реальной файловой системе никакого доступа!
     
  3. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Lua мне не нравится из-за синтаксиса. Я привык к си-"извращениям"...
    А моя идея оказывается - storage. Только что узнал! И кто тут бредит? ;-P
    Об этом я уже писал и "эзотерический" проц придумал с системой команд, где в любом случае попадаешь на код команды, иначе - генерируется исключение/стоп-ловушка.
    Спасибо! Пробовал одназды и ботов писать, и опрос. Большая часть примеров не запускалась и я не знал, где что править.
    ИМХО Перл - самое большое изващение. Я за PHP с его Си-синтаксисом!
    И засорять винт?
    И так от проектов в глазах ребит!
    А вы объясните? С какой стороны? Справа, слева, может в нос!? ;)

    А ваш Луа или Перл сможет переварить мои бесчисленные:
    for(i = 0; n - 1 > j = i; ++ i)
    for(++ j; j < n; LineTo(hdc, tbl[j].x, tbl[j ++].y)
    MoveToEx(hdc, tbl.x, tbl.y, 0);

    А? ;)
     
  4. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    И в чём же его извращение? Чем он вам не угодил?
    А ежедневными бэкапами вы винт не засоряете? И при этом жалуетесь, что неделя работы коту под хвост пошла из-за отсутствия своевременного бэкапа данных. Мне вспоминается присказка про мышей, которые кололись, рыдали, но продолжали есть кактус.
    Я просто к тому, что для решения определённых задач одни языки подходят лучше, а другие - хуже. И надо уметь выбирать между ними. А ваши извращения с javascript, запускаемым через IE для выполнения каких-то локальных системных задач наводит на соответствующие мысли о пошатнувшейся адекватности разработчика.


    Приведённый выше код ни о чём не говорит. Мало того, он ужасен. Не пишите так никогда.
     
  5. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Ну про сферических коней в вакууме и я могу рассуждать. Вы лучше опишите его instruction set, register set, memory model и i/o interface.
     
  6. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Paguo_86PK
    пхп ваяют отталкиваясь от упрощенного перла, кстати.
    а вы в инете их открывайте. на том же гуглекоде. некоторые под свинарники аж по 1гиг на лог выделяют. заодно и от сбоя вроде установки пробной оси не в тот раздел убережетесь

    луа сможет. перл сможет и еще более извращенно. а лимбо даст еще возможность раскидать все это по потокам, передавать по каналам каналы и кругом лепить туфли, так что мозги закипят через 2 минуты, если ктото захочет разобраться. и это при благородном С-подобном синтаксисе.


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


    ---------------------------------------------------------------------
    русифицированый блэкбокс
    http://store.oberoncore.ru/BlackBox/15/blackbox15re.7z
    начать с help --> contents

    красивый русифицированый сайт с доками и вики о
    http://www.oberoncore.ru

    неплохая презентация блэкбокса с введением в основы языка. всего 90 стр с очень мало буков
    http://www.pas.rochester.edu/~skulski/Presentations/BB_Class.pdf

    небольшая библиотечка опенсорс компонентов (модулей) блэкбокса/оберона
    http://www.zinnamturm.eu/
    -------------------------------------------------------------------------
     
  7. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Paguo_86PK
    интересно как вы понимаете слово "аутист"..

    организовать рам диск как дерево ассоциативных массивов на ие жабаскрипте конечно можно, но какой расход памяти будет? и когда эта память освободится, учитывая, что ие любит вростать в ось и гарбажколлектор у него работает более чем приблизительно? достаточно ли просто закрыть ие или надо перегружать комп?

    впрочем, я и сам люблю с инет-тсп из шела/шел-скриптов поковырять. удообноо.. а недавно видел как на шел-скрипте оконные интерфейсы лепить..
     
  8. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    а жаба тут к чему?
     
  9. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Да вы что! Я всегда так пишу.
    Помниться изучал OpenGL-текстуры и флаг написал в одном for не выходя из скобок. Правда отлаживал с руганью и через неделю разобрать не мог писанину.
    Но я люблю писать так, чтоб и самому была тяжко разобраться с первого взгляда... Это - мой стиль!
    Дык, описывал же Здесь один, потом тут с поста #69 - второй...
    Сейчас имеется дизассемблер. За эмулятор брался, но регистры не одолел: С одной группой разобраться не могу никак...
    Вот вот, упращённого! Если убрать доллары перед переменными - Си-кайф!
    Уже выклал! Честно, эзотерический i80x80A дизассемблер. Захотите - найдёте без труда. И блог в придачу...
    Знаю, у самого есть махенькая утилита для производства swf и ActionScript изучал, на Си похож. Правда в утилите много ограничений:
    i += x нельзя и надо бейсико-подобным i = i + x писать, да и другие ограничения. Но приложение я написал. Sokoban хотел потом свой, но запарился!
     
  10. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Paguo_86PK
    чиво?! свф это бинарная теговая запись + стековая машина для скрипта + словари констант + ряд встроеных макрофункций. считай, форт обернутый в xml
     
  11. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    "Да и потом, закоренелый настоящий программист может написать фортрановскую программу на любом языке." (С)

    Paguo_86PK
    Веду я к тому, что если вам не хватает какой-то инструкции - просто напишите подпрограмму и вызывайте где вам понравится, а если не нравится вызывать, можете добавить макрос и писать без всяких CALL. Если инструкций вам не хватает много, соберите их в отдельный файл и подключайте в свои программы. И не нужно думать будто у производителей процессоров какой-то заговор против подобных вам извращенцев, может вы просто пока не нашли достаточно извращённый для себя процессор.
     
  12. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    То есть, вы сами наступаете на свои же грабли и не хотите исправлять их? Поздравляю! Вы - герой, любите сами себе придумывать проблемы и героически их преодолевать, тратя несметное количество времени на это.
    И это не ваш стиль, а это ваш эгоизм и ваше невежество, ИМХО.
    Я за веткой X64 почти не слежу. Ок, почитаю на досуге, когда время свободное появится.
    Я не понимаю: вас что, только доллары смущают?
     
  13. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    ----------------------------------------------------------------------------
    как сделать выходной ехе из блэкбокс проекта
    http://www.oberoncore.ru/wiki/blackbox/make_exe

    пример такого блэкбокс хэловора в аттаче
    ---------------------------------------------------------------------------



    Black_mirror
    нормального извращенца тошнит от любого не своего процессора. нормальный извращенец лепит свой в железе, переносит на него ось и дале старается работать только на нем.
    http://www.mycpu.eu/ -- пример монстроидного извращенца. хотя.. я ему завидую
     
  14. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Ух ты! Спасибо за ссылку!
    А человек то - настоящий мужчина! Свою мечту взял и воплотил!
    А вы всё смеётесь... :dntknw:

    Эх, знал бы я про это в свои 17!

    Сейчас моя затея с процессором собственным кажется не такой уж и дурной. Хотя здесь вы дружно её вытоптали...

    На данный момент я занимаюсь доработкой i8080A. Не Z80, так-как слишком навороченный сам по себе, а именно i8080A. Расширил его систему команд значительно, хотя не использовав при это ни одного резервного оп-кода, в отличии от Z80.
    Желающие могут найти Wiki-страничку с описанием всех наворотов в code.google
     
  15. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    8086 Instruction Set
    Microprocessor 8086 instruction description
    Мнoгие справочники, по которым я в своё время осваивался в микропроцессорной технике, описывают Esc-инструкции - как команды работы с сопроцессором. Однако, не утверждается и не уточняется, какой именно сопроцессор может быть использован.
    Ошибаюсь ли, если смею подумать, что инженеры Intel наделили Esc-инструкциям больший потенциал, нежели потом во всех системах был использован?
    То есть, не обязательно математический сопроцессор мог внедряться собственными инструкциями в систему команд x86? Любое другое устройство могло быть подключено в роли сопроцессора и иметь иные ассемблерные обозначения за Esc-кодами?

    P.S.: Если я прав, то слишком многозначная политика Intel и разработчики IBM-PC с их нацеленностью на дешёвый настольный ПК с дополнительным сопроцессорным расширением лишь до научных математических вычислений, перечеркнули изначально перспективную идею "подтягивания" периферийного оснащения в саму систему команд?
    Иными словами, под теми же Esc-командами могли бы работать и FPGA-узлы? Ведь некоторые Esc-комбинации так и остались "reserved", протухая зря…
    Что пошло не так? Кто именно виноват? Есть ли ссылки, описывающие "грустную" историю Esc-кодов в FPU-ловушке?
    (Заинтересовал вопрос, так как некоторые процессоры, вместо нудного программирования периферии через in/out или окна памяти, используют подобные esc расширители)
     
  16. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    Один умный дядька мне именно так и говорил - произвольное устройство, оказавшееся на шине, получает код-Esc. Интернет смутно подтверждает то же. Но так же как и можно привести аналогию, что для AGP не придумали никаких других устройств, кроме видеокарт, то для той шины просто не было создано ничего другого, кроме FPU. Слишком быстро сопр. стал интегрированным.

    Скажу больше, с сопром можно и (в оригинале) через порты ввода-вывода работать ( http://codefaq.ru/viewtopic.php?id=70 )

    Насколько мне позволяет соображалка, из твоих предположений об "других процессорах" и "неиспользованном потенциале" можно сделать вывод о "зародыше мультипроцессорных систем"

    http://intel386.narod.ru/doc/asm/7-1.html

    Набор команд микропроцессора 8088 содержит команду ESC, которая сама по себе не выполняется в микропроцессоре 8088. В системах без сопроцессора 8087 команда ESC идентична команде NOP - за исключением того что для ее выполнения требуется больше времени.
    Все команды ESC имеют встроенную адресную информацию, а именно, для вычисления адреса, они используют байт mod=r/m. Несмотря на то, что команда ESC действует как команда NOP, микропроцессор 8088 выполняет вычисление исполнительного адреса, а заетм выполняет чтение памяти по результирующему адресу, хотя и не производит никаких действий с данными. Если байт mod=r/m определяет регистр, а не память микропроцессора 8088, никакого чтения памяти не происходит.

    Тем временем микросхема 8087 "наблюдает" за последовательностью команд, выполняемых микропроцессором 8088. Когда микропроцессор выполняет команду ESC, микросхема 8087 распознает эту команду, как свою собственную. Затем микросхема 8087 ждет, пока микропроцесоор 8088 выполнить фиктивное чтение памяти. Когда адрес памяти оказывается на системной шине, микросхема 8087 "захватывает" его, и начиная с этого момента знает, где находятся данные в памяти, не вычисляя при этом адреса. Микропроцессор 8088 вычисляет адрес, а микросхема 8087 выполняет остальную часть команд. Теперь микросхема 8087 может "похищать" некоторые циклы памяти для чтения или записи данных, а микропроцесоор 8088 в это время продолжает работу.


    Воспаленное (гриппую) воображение рисует специальные сопроцессоры, производящие факторизацию Больших Чисел, в то время пока основной процессор следит за всем остальным, как обычно.
     
  17. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Кaк я и предположил: Узкая капиталистическая рыночная политика победила расплывчатую потенциальную концепцию Intel…
    Но, справедливо будет задать следующий вопрос, который возникает и требует уточнения…
    Так, перед началом работы с сопроцессором (FPU) рекомендуется подготовить его инструкцией FINIT (сейчас это уже не актуально). А что мешало зарезервированный Esc-код (до сих пор у многих инструкций существуют комбинации операндов с грифом "reserved" ведь) использовать за селектор сопроцессора?
    Допустим, в системе 5 сопроцессоров и их Esc-оп-коды взаимно пересекаются. Но, прежде чем работать с конкретным сопроцессором, программа начинает блок с его инструкциями специально зарезервированным кодом. Тогда, сам FPU будет игнорировать те же его коды, тогда же другой из сопроцессоров активируется и станет эти команды обрабатывать как свой набор…
    P.S.: Что этому мешает?
    В контексте конкретной задачи можно флажком отключить FPU, на сколько я помню. Тогда обращение к FPU в приложении будет генерировать исключения. А по ним - уже можно разбираться, какой сопроцессор подтянуть к обработке следующих инструкций…
     
  18. xcode

    xcode Member

    Публикаций:
    0
    Регистрация:
    8 апр 2007
    Сообщения:
    105
    Инструкции придумал такие. В общем понятно что все эти инструкции можно реализовать другими инструкциями, но смысл именно в том что часто было бы удобно делать это одной командой.
    1. операции минимума и максимума для целых чисел одной инструкцией.
    2. абсолютное значение знакового целого одной инструкцией
    3. операции "приближения к нулю" и "отдаления от нуля". Аналоги сложения и вычитания, но при этом в зависимости от знака числа выполняется или сложение или вычитание для достижения нужного эффекта.
    4. (на самом деле это уже есть) вычисления с насыщением (saturation). Вместо переполнения результат - максимальное или минимальное значение данного типа
    5. математические функции для чисел с фиксированной точкой
    Иногда не нужна высокая точность floating point, а нужно просто сосчитать что-то быстро. На некоторых микроконтроллерах вообще нет FPU по причине его высокой сложности - а простейшая математика и тригонометрия бывает нужна и там. Впрочем, и для x86 это тоже может быть актуально.
    функции основные - sqrt, sin, cos, tan, asin, acos и т.д. Формат fixed point может быть например 16.16 для x32 и 32.32 для x64.
    Говоря о тригонометрии, стоит отметить то что угловую меру имеет смысл держать не в радианах, а в долях полного диапазона данной разрядности (т.е. для байта 0 - это 0 градусов, 63 = 90 градусов, 127 = 180 градусов и 191 это 270 градусов). Удобно тем, что при сложении и вычитании углов автоматически за счет переполнения происходит "накрутка" и угол получается всегда правильный, не требующий нормализации. В принципе можно ввести команду приведения такой угловой меры к радианам и обратно (хотя это и достигается умножением и делением на константу, так что скорее всего отдельную команду не надо)
    6. какая нибудь операция битового смешивания типа CRC. Некая операция типа XOR, но такая что каждый бит операнда влияет сразу на все биты результата. И желательно симметричная (то есть повторное применение с тем же операндом даст исходное значение).
    7. не знаю зачем но прикольно было бы иметь команду которая разворачивает все биты (т.е. для байта 0-й бит становится 7-м, 1-й - 6-м и т.д.)
     
  19. Paguo_86PK

    Paguo_86PK Руслан

    Публикаций:
    0
    Регистрация:
    8 окт 2007
    Сообщения:
    911
    Адрес:
    Ташкент
    Нa префикс REP нагружены лишь строковые movs/lods/stos… Давно бы уж унифицировали долбанный этот префикс, чтобы спаривался и с математическими операциями. Чем тратить лишние опкоды, лучше в паре с префиксом повтора расширить функциональность математики. И длина инструкций не изменится, и никаких новых опкодов ввести не потребуется.
    Типа, rep+add eax,edx -> сложение с насыщением; rep+add ax,dx -> сложение двух упакованных 16-битных слов eax с edx; rep+add al,dl -> сложение четырёх упакованных байтов…
    Тaк 20 лет назад я тоже думал и пытался разработать алгоритмы.
    Только у меня не фиксированная запятая, а усечённое: 1 бит знака, 1 бит целого и 30 бит дробного - от -1.9(9) до +1.9(9). И синусы всякие также, вместо радианов, использовали только дробную часть…
    Eсть специфические алгоритмы, где приходится либо таблицу подготавливать для этого, либо делать 5 операций сдвига и маскирования. Можно и тремя обойтись + bswap…
    P.S.: Жаль x86 не процессор с частично открытым перегружаемым микрокодом…
     
  20. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    FFT же с её бит-реверсной индексацией элементов.