Автор |
Тема: Вопрос по пpофилеpу (Прочитано 960 раз) |
|
Tupitsin
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 191
|
В разделе "Расходы вpемени на выполнение команд в файлах-коэффициентах:" отчета профайлера есть некоторые строки, значение которых не вполне понятно простому смертному. В частности, меня интересуют команды: push var + set var push double push string Например, что имеется ввиду под операцией "+"? Сложение чего? В моем конкретном варианте профиля эти команды лежат вверху списка. Но ведь возможны и другие варианты. Поэтому, есть предложение Аркадию, по возможности "огласить весь список".
|
|
Зарегистрирован |
|
|
|
Arkady
Administrator
Просмотреть Профиль | WWW | E-мэйл
Сообщений: 484
|
on 27.08.09 в 11:21:38, Tupitsin wrote:В разделе "Расходы вpемени на выполнение команд в файлах-коэффициентах:" отчета профайлера есть некоторые строки, значение которых не вполне понятно простому смертному. В частности, меня интересуют команды: push var + set var push double push string Например, что имеется ввиду под операцией "+"? Сложение чего? В моем конкретном варианте профиля эти команды лежат вверху списка. Но ведь возможны и другие варианты. Поэтому, есть предложение Аркадию, по возможности "огласить весь список". |
| ФБП компилирует выражения в команды своей виртуальной машины используя т н "польскую запись". Например: x=(a+b)*(c-d)/5 будет преобразовано в a b + c d - * 5 / ->x или, уже в командах: Quote: push var a -- втолкнуть значение переменной а в стек push var b -- втолкнуть значение переменной b в стек + -- сложить последние две ячейки стека, стек сжимается на ячейку, сумма в верхей ячейке push var c -- втолкнуть значение переменной c в стек push var d -- втолкнуть значение переменной d в стек - -- вычислить разность последних двух ячеек стека, стек сжимается на ячейку, разность в верхей ячейке * -- вычислить произведение последних двух ячеек стека, стек сжимается на ячейку, произведение в верхей ячейке push double 5 -- втолкнуть число 5 в стек / -- вычислить частное последних двух ячеек стека, стек сжимается на ячейку, частное в верхей ячейке set var x -- значение верхней ячейки отправляется в переменную x, стек сжимается на ячейку. |
| Если какие-то еще команды непонятны - спрашивайте. А то весь список большой
|
|
Зарегистрирован |
|
|
|
Tupitsin
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 191
|
Следовательно, все эти команды относятся только к вычислению арифметических выражений. Понял. Спасибо.
|
|
Зарегистрирован |
|
|
|
Arkady
Administrator
Просмотреть Профиль | WWW | E-мэйл
Сообщений: 484
|
on 27.08.09 в 13:09:21, Tupitsin wrote:Следовательно, все эти команды относятся только к вычислению арифметических выражений. Понял. Спасибо. |
| И к строковым выражениям тоже. В зависимости от типов данных в ячейках стека выполняется, например, соотвeтствующая операция сложения - арифметического или конкатенации строк.
|
|
Зарегистрирован |
|
|
|
|
|