Ну да,
но всё равно не понимаю.Цитата:
It is not possible to get the address of a constant, because they aren't stored in memory, you can try making it a typed constant.
Вид для печати
Ну да,
но всё равно не понимаю.Цитата:
It is not possible to get the address of a constant, because they aren't stored in memory, you can try making it a typed constant.
При компиляции в код подставляется непосредственно значение константы, а не ссылка на ячейку с ней. Т.е., к примеру, если константа в ЯВУ задана ccc=2, то в компилируемом коде подставляется ld a,2, а не ld a,(ccc). А эта ссс вообще не записывается нигде. Поэтому и указатель на нее невозможно создать.
То есть если этой константе, которая явно string, не указать тип, то в памяти она не хранится? :)
По-видимому, хранится непосредственно в команде в качестве аргумента.
Вот столько памяти компилятору нужно для обработки самого себя:
Хранить синтаксическое дерево полностью не требуется, достаточно хранить только для одной обрабатываемой в данный момент подпрограммы, тогда оно займёт не более 30 килобайт.Код:LEX
before: 5382 lines, 143737 chars
after: 18924 tokens, 64656 chars
SYNTAX
930 IDs // sizeof=70 bytes, total 65100
677 vars // sizeof=14 bytes, total 9478
188 subrs // sizeof=79 bytes, total 14852
178 types // sizeof=32 bytes, total 5696
8503 nodes // sizeof=71 bytes, total 603713
Плюс сам компилятор (на данный момент 50 килобайт, но будет больше).
Итого, чтобы компилятор мог собрать сам себя на целевой системе нужна система с каким-то диском и минимум 256 кБайт RAM. IBM PC AT? :)