О проекте моего 128-битового (128-bit) процессора LUX-Septium.
Представьте себе 128-битовый (128-bit) процессор, а конкретнее - процессор с адресуемым регистровым полем в сотни регистров общего назначения - РОН и с длиной каждого из регистров общего назначения - равной 128 бит или то же, что и 16 байт!
Для того, чтобы получить некоторое визуальное проедставление о величинах, с которыми работает этот 128-битовый (128-bit) процессор, ниже - приведён следующий фрагмент программы:
12345678987654321012345678987654321 ohed oinl
В этом фрагменте приведено обычное десятичное число с отладочным десятичным кодом вида - ЦИФРОВАЯ ВОЛНА - специально разработанным мною для визуальной отладки и тестирования алгоритмов подпрограмм перевода десятичных - либо шестнадцатиричных чисел в двоичную систему счисления и обратно - в десятичную - либо шестнадцатиричную систему счисления, в сквозном тракте компиляции - исполнения.
Оттранслированный и исполненный эмулятором-интерпретатором моего 128-битового (128-bit) процессора LUX-Septium - вышеприедённй фрагмент Люкс-программы выдаёт результат следующего вида:
000260B060436414 E55381BA6EB5F4B1
12345678987654321012345678987654321
Где, в первой строке - изображён шестнадцатиричный код двоичной величины этого числа, исходного вида - ДЕСЯТИЧНАЯ ЦИФРОВАЯ ВОЛНА, переведённого Люкс-компилятором в двоичную систему счисления, а именно - приведён шестнадцатиричный код длиной в октослово, в виде двух шестнадцатиричных кодов, длиной - в квадрослово.
А, во второй строке - изображён десятичный код двоичной величины этого же числа, переведённого обратно в десятичный вид эмулятором-интерпретатором моего 128-битового (128-bit) процессора LUX-Septium, в сквозном тракте компиляции - исполнения.
...
Следующий фрагмент даёт примерно такое же наглядное представление, но - с кодом, вида - ШЕСТНАДЦАТИРИЧНАЯ ЦИФРОВАЯ ВОЛНА:
00123456789ABCDEFEDCBA98765432100 ohed oinl
и выдает следующий результат выполнения Люкс-программы:
0123456789ABCDEF EDCBA98765432100
1512366075204170946102572431435833600
...
Следующий фрагмент даёт примерно такое же наглядное представление, но - с кодом, вида - (почти) ВСЕ ДЕВЯТКИ:
8999999999999999999999999999999999999 ohed oinl "MAX to BIN & to DEC" say
и выдает следующий результат выполнения Люкс-программы:
06C556425A113FC3 4DA8978FFFFFFFFF
8999999999999999999999999999999999999 MAX to BIN & to DEC
- который является примером МАКСИМАЛЬНОГО ДЕСЯТИЧНОГО ЧИСЛА, переведённого Люкс-компилятором в двоичную систему счисления, а затем - переведённого обратно в десятичный вид эмулятором-интерпретатором моего 128-битового (128-bit) процессора LUX-Septium, в сквозном тракте компиляции - исполнения.
...
Следующий фрагмент даёт примерно такое же наглядное представление, примерно, с таким же кодом, вида - (почти) ВСЕ ДЕВЯТКИ:
19999999999999999990000000000000000000 ohed "MAX to BINARY" say
и выдает следующий результат выполнения Люкс-программы:
01812F9CF7920E2B 58B6876C589C0000 MAX to BINARY
- который является примером МАКСИМАЛЬНОГО ДЕСЯТИЧНОГО ЧИСЛА, переведённого Люкс-компилятором в двоичную систему счисления, а обратный пример был невозможен, при применении алгоритма с использованием только ограниченных стандартных приёмов программирования в стандартных командах целочисленной арифметики двойной точности 64-битового процессора - типа - Intel 80x86, архитектуры вида IA-32e.
...
Следующий фрагмент даёт примерно такое же наглядное представление, примерно, с таким же кодом, вида - (почти) ВСЕ ПЯТНАДЦАТКИ:
007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ohed oinl "MAX to DECIMAL" say
и выдает следующий результат выполнения Люкс-программы:
07FFFFFFFFFFFFFF FFFFFFFFFFFFFFFF
10633823966279326983230456482242756607 MAX to DECIMAL
- который является примером МАКСИМАЛЬНОГО ШЕСТНАДЦАТИРИЧНОГО ЧИСЛА, переведённого Люкс-компилятором в двоичную систему счисления, а затем - переведённого обратно в десятичный вид эмулятором-интерпретатором моего 128-битового (128-bit) процессора LUX-Septium, в сквозном тракте компиляции - исполнения.
...
Возможно алгоритмы моих 128-битовых программ перевода в двоичную систему требуют уточнения и доработки, но и здесь, и сейчас - они дают достаточно наглядное представление о масштабах величин, с которыми уже реально оперирует Люкс-компилятор и эмулятор-интерпретатор моего 128-битового (128-bit) процессора LUX-Septium.
***
Однако, несмотря на столь громоздкие данные, которые может обрабатывать данный 128-битовый (128-bit) процессор LUX-Septium, система команд этого процессора является байтоориентированной и весьма компактной, и до некоторой степени даже компактнее системы команд 16-битового процессора Intel 8086 !!!
Так, исходный модуль самого компилятора с языка LUX для этого 128-битового (128-bit) процессора LUX-Septium длиной в 4245 команд компилируется в исполняемый модуль, для этого же 128-битового (128-bit) процессора LUX-Septium с длиной исполняемого кода в 8736 байт.
Так же, исходный модуль самого компилятора с языка LUX для этого 128-битового (128-bit) процессора LUX-Septium длиной в 4245 команд компилируется в исполняемый модуль, для 16-битового (16-bit) процессора Intel-8086 с длиной исполняемого кода в 12273 байт.
Из этого примера - имеем среднюю длину команды:
Для исполняемого кода 128-битового процессора LUX-Septium: 8736/4245 = 2,06 байта!!!
Для исполняемого кода 16-битового процессора Intel-8086: 12273/4245 = 2,89 байта.
То есть, практически, мы, здесь, имеем соотношение ДВА байта LUX-Septium(!!!) к ТРЁМ байтам Intel-8086 ...
Система команд этого 128-битового (128-bit) процессора LUX-Septium, является и существенно более прозрачной, наглядной и понятной, чем системы команд всей линейки процессоров Intel 80x86, а тем более соременных моделей архитектуры IA-32e, которые стали невероятно громозкими из-за весьма частого применения REXX-префиксов, что наряду с восьмеричными полями байта кода операции и байта кодов полей MOD/RM, опускает системы команд до пёстрого и малопонятного БИТОВОГО УРОВНЯ.
Читать, декодировать и понимать такие битовые системы команд - весьма затруднительно.
Иногда конечно помогают дизассемблеры, но разработчики таких битоориентированных систем команд процессоров не утруждают себя укомплектовать такие процессоры даже ассемблером, не говоря уже о дизассемблере.
Затруднительно и долго было, например, найти ассемблер для 64-битовой архитектуры IA-32e, а дизассемблер для неё наверно еще и не начали разрабатывать, и вся надежда пожалуй только на хакеров, которые разработали дизассемблер для 32-битовой архитектуры IA-32.
***
Для моего же, нового, 128-битового (128-bit) процессора LUX-Septium, уже сейчас разработаны и компилятор с языка LUX, и дизассемблер, и даже декомпилятор - в исходный текст языка LUX.
И это на порядок повышает эффективность работы с таким процессором, как на стадии проектирования самого процессора, так и при работе с этим процессором, на стадии разработки программного обеспечения для него.
Я - как и невольно, так и сознательно применяю этот оборот речи: "при работе с этим процессором", поскольку, у меня уже давно такое ощущение, что я работаю именно с процессором, хотя, реально, работаю с эмулятором-интерпретатором.
А собственно, что? - Ведь на процессоре, с частотой 2,5 ГГц этот интерпретатор имееет производительность 200 миллионов операций в секунду!
И это вполне достаточно, для эффективной разработки программ, тем более, что эффективность всех версий компиляторов с языка Люкс - позволяет компилировать любую программу - на любом процессоре, либо эмуляторе-интерпретаторе - за сотые, если не тысячные, доли секунды!!!
Да, и я ведь, собственно, создал новый декодер команд, для серийных процессоров - всей линейки процессоров Intel 80x86.
Что с того, что этот декодер, пока - программый!?
Ведь, если бы та же фирма Intel, или любой другой разработчик и производитель микропроцессоров, включили бы этот мой декодер в аппаратный состав своего процессора, хотя бы как декодер-дешифратор альтернативной системы команд, то это была бы великолепная совместная разработка!!!
Ведь, в силу существенно более прозрачной, наглядной и понятной системы команд этот декодер менее громоздок и в силу этого имел бы более высокое быстродействие!
И альтернативные системы команд имеют известное распространение, к примеру фирма Intel включила нынешнюю систему команд 80x86, в качестве альтернативной, в состав своей новой разработки - прцессора Itanium.
А в силу компактности кода команд - в быстродействующем кэше комад будет вмещаться больше команд и коротких циклов, что также существенно повысит быстродействие всего процессора!
А разрядность процессора не имеет принципиального значения, ведь у меня есть эмуляторы-интерпретаторы для работы с данными в 8-bit - 16-bit - 32-bit - 64-bit - 128-bit и 256-bit - НЕ ПРЕДЕЛ!!!
***