> -- Alexander Shiryaev писал(а):
> load/store?э… не совсем понял вопрос. если про Nanojit — то там есть только инструкция «получить значение параметра», и всё. implicit load, то бишь. обратной отчего-то нет. а я пока не настолько хорошо понимаю код нано чтобы сказать: её нет потому что какая-то архитектурная закавыка, или просто автору не понадобилось.

> -- Alexander Shiryaev писал(а):
> Хорошо то, что вот это компилируется:я не очень понял, подколка ли это или нет. ;-) вообще, у меня переполнение не проверяется в том числе и парзером, и сворачивалкой констант (потому что это делается тем же `resolveExpr()` что и весь остальной код).

впрочем, даже если я и добавлю эти проверки, то подобное всё равно будет разрешено. по той логике, что INTEGER — это 32-bit 2-complement signed. мы это знаем, компилятор это знает, CPU это знает — и нет смысла притворяться, что оно не так. соответственно, нет и смысла отвергать альтернативные формы записи этих битов.

а в CP2 хексы вообще парзятся в LONGINT, без вариантов. диапазон проверяется только при присваивании, и — насколько помню — [MININT…MAXUINT]. как раз чтобы подобное работало.

я б, может, тоже проверял, но в языке у меня лонгинтов нет в принципе, а в крестах нормально проверить переполнение нельзя. я, конечно, использую "-fwrapv", но городить проверки ручками мне лень.


из свежих новостей: намедни впилил `&` и `OR`. и вспомнил, что забыл сделать VAR-аргументы. вот теперь сижу и думаю: то ли просто флагом обойтись, то ли завести полноценный тип `reference` (который как pointer, но не pointer). тип красивей, а флаг проще.