Думается мне, что 60 лет тому назад основной вектор применения ЭВМ был оборонкой и главное там - всё должно работать. Причём, авторство - за военными… P.S.: Не думали они же, что процессоры - станут рыночной попсой…
толку в той махинке было близко к Зеро ==>> оно и сейчас разработка самолётов идёт в основном чрез стендовые прогонки. внедрение таких няшек приведёт к весьма неоднозначным итогам.. копирастия уже и так достигла вершин абсурда.
запустил ты неавторизованный файлик, девайс стуканул на тебя в облачный сервис и получай штраф. откеля файло стянул?
А еще команда которая сообщает в роскомназдор если ты открыл запрещенный сайтик через vpn или tor На самом деле великое счастье что всего этого нет. Я вот думаю - какие фундаментальные операции над числами существуют, чтобы их сделать командами? 1. Битовые операции - тут все просто; AND, OR, XOR, NOT. Хотя существует 16 бинарных битовых операций но реализовывать их все не имеет смысла - достаточно этих основных. 2. Операции над битовыми векторами - сдвиги, вращения, предложенное мной обращение битов. 3. Арифметические операции - сложение, вычитание, умножение, деление и остаток от деления. К слову сказать, целочисленных делений может быть два: обычное (показывающее максимальное целое количество делителей, вмещающихся в делимое) и деление показывающее минимальное целое количество делителей, покрывающих делимое. Второй тип деления может быть получен из первого арифметически, так что вряд ли это отдельная операция (хотя если есть свободные опкоды - можно и сделать). Сюда же относятся сравнение, минимум и максимум. 4. Математические операции (как над плавающей точкой так и над фиксированной). Фундаментальные - степень и корень, логарифм, синус косинус тангенс, арксинус арккосинус арктангенс; Это реально та основа на которой основаны все вычисления. Есть и более экзотические функции, которые напрямую чреез базовые не выражаются. Но их область применения не такая широкая. Но вот интересно - есть ли что-то такое же фундаментальное и полезное, как и арифметические и битовые операции? Фундаментальность например сложения очевидна. Связав биты в регистре сумматора определенным образом, мы получаем реализацию ни больше ни меньше основной математической операции, на которой строится вся математика. Фундаментальность например нахождения среднего между двумя числами - сомнительна, так как эта операция хотя и полезна, но элементарно реализуется через другие. Пока не было двоичной арифметики, люди понятия не имели например о битовых операциях и их свойствах. Тот же XOR. Но с появлением двоичной логики стало понятно что это тоже фундаментальная операция, не уступающая сложению. Но - другая. Вот и интересно - все ли открыто, или есть что-то еще столь же фундаментальное но пока скрытое от нас?
xcode, разрабы современных процев с весьма широкой улыбкой смотрят на такие темы, ибо перечень внедряемых команд в камень есмь результат дiавољски муторной работёнки. процы общего предназначения ужо достигли потолка арх. оптимизаций, а "улучшения" приводят к жёстким перекосам (одна операция ускоряется и обрушивает шустрость всех прочих). тот же хухль делает спец. проц для своих нейросетей. https://www.extremetech.com/computi...u-makes-hash-intel-nvidia-inference-workloads
Ну это понятно .Но тема скорее о том, какие инструкции можно было бы дополнительно реализовать в процессоре. Понятно что такие инструкции скорее всего будут редко используемыми, так как все часто используемое уже известно. Хотя кто знает... Именно в этом интерес - найти что нибудь такое необычное и в то же время полезное. Например можно быстро реализовать на аппаратном уровне например NIN и MAX. Без операций сравнения и переходов, а просто загружаем два числа в регистры и выполняем инструкцию - на выходе минимальное или максимальное. Делается это примерно как сумматор, только наоборот вычисление начиная со старших разрядов, и схемотехника конечно другая. И безусловно эти операции были бы востребованы при генерации кода, довольно часто это бывает нужно. Операция REV (reverse bits) - тоже вручную делать муторно, а аппаратно раз плюнуть. Еще подумал о такой операции как подсчет количества единичных бит в регистре. Для всяких четностей и контрольных сумм. В x86 есть флаг четности, но часто ли его используют? Даже в Си нет такой операции. А интересно было бы вместо этого флага сделать именно подсчет бит.
xcode, Тема скорре ниочём. Формат IA это костыль и интересно помотреть на того придурка, кто эту архитектуру разработал. Эффективная раскодировка невозможна. А сейчас это важно, мощности железа позволяют запустить визор под визором, без потери профайла, но коденг этого - изврат. Интел предоставила либу для раскодировки - ксед, но это тормоза редкие. Так что эта архитектура - уг.
Indy_, да, x86 весьма и весьма корява. Но думаю, несмотря на название темы, не имеет смысла ограничиваться только x86 архитектурой. У меня давно была мысль сделать таблицы команд для всех архитектур и провести сравнительный анализ
Ктo-нибудь знает, как добыть меню сторонней программы? Никакие «GetMenu», «MN_GETHMENU», «FindWindowEx(… MAKEINTATOM(0x8000))» и даже метровые матюки не позволяют из того же VLC добыть никакое меню. Даже системное меню! Что за дрянь такая эти современные программы? Вот в VirtualDub я с лёгкостью дистационно отправляю WM_COMMAND с заранее прочитанными идентификаторами нужных пунктов меню и тот всё делает. Например, стартует/прекращает захват в файл. (Когда кто-либо к моему столу подошёл и тронул мышь - запускается захват экрана и Web-камеры) А вот с VLC вторые сутки парюсь. Весь интернет перерыл. В современной винде прямо мода пошла на недоступность меню: В «Paint» и в эксплорере - не читается никакими бубнами, а вот «Блокнот», «NotePad++» и «Калькулятор» с радостью все пунктики выдают. P.S.: Есть у кого какие идеи? В частности, как быть с VLC? Спасибо…
Потому что винапишное меню крайне скудно на свистелки-перделки и вместо него юзают тулбары и всякие самописные контролы.
А как под виртуальной машиной выкусить нужный кусок программы, если не секрет? Есть статья какая-нибудь об этом?