КОМПИЛЯТОР, ГЕНЕРИРУЮЩИЙ БЕЗОПЕРАТОРНЫЙ КОД

1. Компилятор для компиляции первой компьютерной программы, написанной на первом компьютерном языке программирования, во вторую компьютерную программу,
- при этом компилятор содержит генератор кода для генерации второй компьютерной программы путем генерации таблиц и кода машинного языка, причем сгенерированные таблицы и сгенерированный код машинного языка совместно образуют вторую компьютерную программу, причем сгенерированный код машинного языка ссылается на таблицы, причем
- компилятор выполнен с возможностью идентификации арифметического или логического выражения в первой компьютерной программе, причем данное выражение зависит от по меньшей мере одной переменной и генератор кода выполнен с возможностью генерировать одну или более таблиц, представляющих заранее вычисленные результаты идентифицированного выражения для множественных значений упомянутой переменной, и генерировать код машинного языка для реализации идентифицированного выражения во второй компьютерной программе путем осуществления доступа к сгенерированным одной или более таблицам, представляющим заранее вычисленные результаты, и причем
код машинного языка, сгенерированный для реализации идентифицированного выражения,
- не содержит арифметических или логических машинных команд и/или
- не содержит условных машинных команд.
2. Компилятор по п. 1, причем компилятор выполнен с возможностью идентификации условного выражения, зависящего от условного оператора, в первой компьютерной программе, и генератор кода выполнен с возможностью генерировать одну или более заранее вычисленных таблиц переходов для идентифицированного выражения для множественных значений условного оператора и генерировать код машинного языка для реализации идентифицированного выражения во второй компьютерной программе путем осуществления доступа к сгенерированным одной
или более таблицам переходов.
3. Компилятор по п. 1, в котором сгенерированный код машинного языка для реализации выражения является безоператорным, причем безоператорный код машинного языка содержит только
- операции загрузки и сохранения для переноса данных между регистрами и памятью и
- операции перехода.
4. Компилятор по п. 3, в котором операции загрузки служат для загрузки регистра одним из: постоянной, значения, хранящегося по адресу памяти, и другого регистра; причем адрес памяти указан одним или более регистрами и/или постоянными.
5. Компилятор по п. 3, в котором операции сохранения служат для сохранения одного или более регистров и/или постоянных по одному или более адресам памяти, причем адреса памяти указаны одним или более регистрами и/или постоянными.
6. Компилятор по п. 3, в котором операции перехода служат для перехода к адресу памяти, причем адрес памяти указан одним или более регистрами и/или постоянными, или адрес памяти извлекается из дополнительного адреса памяти.
7. Компилятор по п. 1, в котором машинный язык действует на регистры, причем поднабор регистров образует адресные регистры для содержания адресов памяти.
8. Компилятор по п. 1, причем компилятор выполнен с возможностью идентификации в первой компьютерной программе выражения, действующего на один или более элементов данных, причем генератор кода выполнен с возможностью формирования кода машинного языка для:
- загрузки каждого из элементов данных в соответствующий регистр одного и того же адресного регистра,
- загрузки данных в другие регистры адресного регистра, чтобы адресный регистр указывал запись таблицы,
- загрузки результата оператора, действующего на элементы данных, из адреса памяти, указанного адресным регистром, в регистр.
9. Компилятор по п. 1, причем компилятор выполнен с
возможностью идентификации в первой компьютерной программе условного перехода, причем генератор кода выполнен с возможностью формирования машинного кода для:
- загрузки регистра, удерживающего значение, указывающее условный оператор в регистре адресного регистра,
- загрузки данных в другие регистры адресного регистра, чтобы адресный регистр указывал запись таблицы,
- перехода по адресу памяти, хранящемуся в памяти по адресу памяти, указанному адресным регистром.
10. Компьютер, содержащий компилятор по п. 1.
11. Способ компиляции для компиляции первой компьютерной программы, написанной на первом компьютерном языке программирования, во вторую компьютерную программу, причем способ содержит этап, на котором:
- генерируют вторую компьютерную программу путем генерации таблиц и кода машинного языка, причем сгенерированные таблицы и сгенерированный код машинного языка совместно образуют вторую компьютерную программу, причем сгенерированный код машинного языка ссылается на таблицы, при этом:
- идентифицируют арифметическое или логическое выражение в первой компьютерной программе, причем данное выражение зависит от по меньшей мере одной переменной, и генерируют одну или более таблиц, представляющих заранее вычисленные результаты идентифицированного выражения для множественных значений упомянутой переменной, и генерируют код машинного языка для реализации идентифицированного выражения во второй компьютерной программе путем осуществления доступа к сгенерированным одной или более таблицам, представляющим заранее вычисленные результаты, причем
код машинного языка, сгенерированный для реализации идентифицированного выражения,
- не содержит арифметических или логических машинных команд и/или
- не содержит условных машинных команд.
12. Способ компиляции по п. 11, в котором первая компьютерная программа является программой виртуальной машины
для интерпретации четвертой компьютерной программы,
причем способ дополнительно содержит этап, на котором:
- компилируют третью компьютерную программу, написанную на третьем компьютерном языке программирования, в четвертую компьютерную программу, написанную на четвертом компьютерном языке программирования, посредством того, что:
генерируют четвертую компьютерную программу путем генерации дополнительных таблиц и кода четвертого языка программирования, причем эти дополнительные таблицы и код четвертого языка программирования совместно образуют четвертую компьютерную программу, причем сгенерированный код четвертого языка программирования ссылается на дополнительные таблицы, при этом:
идентифицируют арифметическое или логическое выражение в третьей компьютерной программе, причем это выражение зависит от по меньшей мере одной переменной, и генерируют одну или более таблиц, представляющих заранее вычисленные результаты идентифицированного выражения для множественных значений упомянутой переменной, и генерируют код четвертого языка программирования для реализации идентифицированного выражения в третьей компьютерной программе путем осуществления доступа к одной или более сгенерированным таблицам, представляющим заранее вычисленные результаты.
13. Компьютерная программа, содержащая:
- первые таблицы и код второго языка программирования, сгенерированный путем компиляции первой компьютерной программы, написанной на первом компьютерном языке программирования, во вторую компьютерную программу, написанную на втором компьютерном языке программирования, компилятором для компиляции первой компьютерной программы, написанной на первом компьютерном языке программирования, во вторую компьютерную программу, причем компилятор содержит генератор кода для генерации второй компьютерной программы путем генерации таблиц и кода второго языка программирования, причем сгенерированные таблицы и сгенерированный код второго языка программирования совместно образуют вторую компьютерную программу, причем сгенерированный код второго языка программирования ссылается на таблицы, причем
компилятор выполнен с возможностью идентификации арифметического или логического выражения в первой компьютерной программе, причем данное выражение зависит от по меньшей мере одной переменной, и генератор кода выполнен с возможностью генерировать одну или более таблиц, представляющих заранее вычисленные результаты идентифицированного выражения для множественных значений упомянутой переменной, и генерировать код на втором языке программирования для реализации идентифицированного выражения во второй компьютерной программе путем осуществления доступа к сгенерированным одной или более таблицам, представляющим заранее вычисленные результаты; и при этом код машинного языка, сгенерированный для реализации идентифицированного выражения,
- не содержит арифметических или логических машинных команд и/или
- не содержит условных машинных команд,
и при этом компьютерная программа дополнительно содержит:
- вторые таблицы и код машинного языка, сгенерированный путем компиляции программы виртуальной машины для интерпретации второй компьютерной программы в машинный язык компилятором по п. 1.
14. Компьютерная программа, содержащая средство кода компьютерной программы, выполненное с возможностью осуществления всех этапов по п. 11, когда компьютерная программа исполняется на компьютере.