Войти
ФлеймФорумПрограммирование

А что если сделать свою мини-среду программирования с компилятором? (8 стр)

Страницы: 14 5 6 7 8 9 Следующая »
#105
18:03, 21 фев 2012

TarasB
> Если при вызове функции некоторые параметры - константы, то создаётся копия
> этой функции, в которой все выражения пересчитаны с учётом знания констант
MSVC тоже так делает

#106
18:35, 21 фев 2012

Вот бы узнать, а может ли так .NET-овский компилятор делать?

#107
10:29, 22 фев 2012

CD
> MSVC тоже так делает

Разве? Я не про шаблонные параметры говорю! А про просто параметры вызова, которые имеют право и не быть константами, в отличие от параметров крестошаблонов (в некоторых других языках шаблоны не имеют этого дурацкого ограничения). Это означает, что параметры вызова ведут себя даже универсальнее, чем параметры шаблона, а это значит, что хвалёные шаблоны вообще не нужны.

#108
11:14, 22 фев 2012

> BitBlt
Лучше GWEN.

#109
19:22, 22 фев 2012

TarasB
> Я не про шаблонные параметры говорю! А про просто параметры вызова
я тоже говорю про параметры вызова
MSVC-шный оптимизатор умеет так делать
правда исходного кода я не помню, на котором такое видел

а вот такой код у тебя создаст 10к функций?

test(x)
{
  if (x == 10000)
    return x;
  else 
    return test(x+1);
}
test(0)
#110
19:24, 22 фев 2012

CD
> а вот такой код у тебя создаст 10к функций?

Не, я ограничил глубину.
Вроде он на сотой остановится - подставит неоптимизированную.

#111
12:55, 28 фев 2012

Мой скриптповый язык 3Д-моделирования уже умеет отображать время!
screen | А что если сделать свою мини-среду программирования с компилятором?
Примечательно, что тупой блок (можно было без копирования сделать на рекурсии, но в лом)

push
 c 0
 translate 0 0.2 2
 l q1 q2
 rotate : 360 12 0 1 0
 l q1 q2
 rotate : 360 12 0 1 0
 l q1 q2
 rotate : 360 12 0 1 0
 l q1 q2
 rotate : 360 12 0 1 0
 l q1 q2
 rotate : 360 12 0 1 0
 l q1 q2
 rotate : 360 12 0 1 0
 l q1 q2
 rotate : 360 12 0 1 0
 l q1 q2
 rotate : 360 12 0 1 0
 l q1 q2
 rotate : 360 12 0 1 0
 l q1 q2
 rotate : 360 12 0 1 0
 l q1 q2
 rotate : 360 12 0 1 0
 l q1 q2
pop

Внутри представляется в виде

glColor
               id0000002F "0.000"
               id0000002F "0.000"
               id0000002F "0.000"
id00000036   GL_LINES
id00000037     glVertex3fv
                 id0000018D "0.000 0.200 4.000"
id00000038     glVertex3fv
                 id0000018E "0.000 0.200 3.800"
id00000041   GL_LINES
id00000042     glVertex3fv
                 id0000018F "-1.000 0.200 3.732"
id00000043     glVertex3fv
                 id00000190 "-0.900 0.200 3.559"
id0000004C   GL_LINES
id0000004D     glVertex3fv
                 id00000191 "-1.732 0.200 3.000"
id0000004E     glVertex3fv
                 id00000192 "-1.559 0.200 2.900"
id00000057   GL_LINES
id00000058     glVertex3fv
                 id00000193 "-2.000 0.200 2.000"
id00000059     glVertex3fv
                 id00000194 "-1.800 0.200 2.000"
id00000062   GL_LINES
id00000063     glVertex3fv
                 id00000195 "-1.732 0.200 1.000"
id00000064     glVertex3fv
                 id00000196 "-1.559 0.200 1.100"
id0000006D   GL_LINES
id0000006E     glVertex3fv
                 id00000197 "-1.000 0.200 0.268"
id0000006F     glVertex3fv
                 id00000198 "-0.900 0.200 0.441"
id00000078   GL_LINES
id00000079     glVertex3fv
                 id00000199 "0.000 0.200 0.000"
id0000007A     glVertex3fv
                 id0000019A "0.000 0.200 0.200"
id00000083   GL_LINES
id00000084     glVertex3fv
                 id0000019B "1.000 0.200 0.268"
id00000085     glVertex3fv
                 id0000019C "0.900 0.200 0.441"
id0000008E   GL_LINES
id0000008F     glVertex3fv
                 id0000019D "1.732 0.200 1.000"
id00000090     glVertex3fv
                 id0000019E "1.559 0.200 1.100"
id00000099   GL_LINES
id0000009A     glVertex3fv
                 id0000019F "2.000 0.200 2.000"
id0000009B     glVertex3fv
                 id000001A0 "1.800 0.200 2.000"
id000000A4   GL_LINES
id000000A5     glVertex3fv
                 id000001A1 "1.732 0.200 3.000"
id000000A6     glVertex3fv
                 id000001A2 "1.559 0.200 2.900"
id000000AF   GL_LINES
id000000B0     glVertex3fv
                 id000001A3 "1.000 0.200 3.732"
id000000B1     glVertex3fv
                 id000001A4 "0.900 0.200 3.559"

То есть все повороты на константный угол для константных точек рассчитываются заранее.

#112
13:02, 28 фев 2012

не угодно ознакомиться с VRML ? :)

#113
13:47, 28 фев 2012

TarasB
Круто, только слишком уж ассемблер напоминает :)

#114
13:53, 28 фев 2012

Bizunow
Ничего общего с асмом.

#115
15:10, 28 фев 2012

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

#116
15:24, 28 фев 2012

Bizunow
Ну да, руками каждый треугольничек выводишь.

#117
16:56, 28 фев 2012

А где ты хочеш это применять?

Мне, почему то, первое что пришло в голову - уровни для какой нибудь tds, но выводить каждый треугольник самостоятельно...

#118
17:04, 28 фев 2012

Bizunow
> но выводить каждый треугольник самостоятельно...

Дык можно их в примитивы объединять же и готовыми примитивами шлёпать. Плюс примитивы могут быть настраиваемыми, то есть если нужен гнутый участок трубы - то можно формулами задать, как его гнуть и потом просто задавать только параметры для сгиба, а он сам будет гнуть как надо.
Применяется для моей игры для моделей вагончиков.

#119
17:57, 28 фев 2012

Ух ты, не уж то от тебя будет еще один толковый симулятор? Круто, жду :)

Страницы: 14 5 6 7 8 9 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.