Ну да,
но всё равно не понимаю.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?![]()
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)