А вот расширить классы для оптимизации отдельных операций (например, не гонять переменную со стека и обратно) - это можно.
Galkov писал(а):
НО, использовать два функциональных вызова, плюс мухобойный Move, чтобы прочитать в Run-Time всего ОДЫН байт -- это же полный беспределЭто, пожалуй, верная мысль Read/WriteBinary оставить на случай строк, а остальные R/W переписать на прямую работу с указателями на конкретные значения. И тогда Move не потребуется.
По поводу алгоритма - так до конца и не получилось понять, где мы резервируем, где режем лишнее, поэтому пришла следующая мысль: если операнду слева пришла константа, то он сразу резервирует в программе место под CmdPush, а потом, в конце, когда уже понятно, константное ли выражение, либо оставлять все, как есть (код записан в TProgram правильно), либо смещать позицию в программе обратно, тем самым как бы стирая CmdPush (и следующей записью перезаписывая его окончательно).