Почему фиксированные значения в Emacs только 29 бит?

И почему они не меняют это?

Редактировать: Причина в том, что я новичок в emacs и хотел бы использовать Emacs в качестве «калькулятора программирования». Таким образом, я могу манипулировать 32-битным & amp; 64-разрядные целые числа и пусть они ведут себя так же, как на родной машине.

 Matthias Benkard22 сент. 2008 г., 09:47
Так что исправления не совсем то, что вы хотите. Вам действительно нужны пользовательские целочисленные операции, которые имитируют машинную арифметику. Я мог бы уточнить, но, возможно, было бы полезно для других, посещающих сайт, если вы открыли новый вопрос для этого.

Ответы на вопрос(6)

я программиста. Common Lisp имеет лучшую обработку чисел, которую я видел на любом языке программирования; наиболее примечательно, что оно имеет целые числа произвольного размера, то есть bignums, а также рациональные числа. У этого также есть вход в произвольных числовых базах и побитовых функциях для bignums. Если вы хотите производить вычисления из Emacs, вы можете запустить CLISP в оболочке M-x. В качестве бонуса, синтаксис практически такой же, как и в Emacs Lisp.

было настолько распространенным, что ряд архитектур ЦП включал, по крайней мере, некоторую поддержку теговых целых чисел в свои наборы команд: Sparc, Альфа, Берроузи K-машина например. В настоящее время мы позволяем среде исполнения Lisp работать с тегами без дополнительной аппаратной поддержки. Я рекомендую прочитать первую ссылку о Sparc, если вы хотите получить краткий обзор истории.

Решение Вопроса

что вам нужны теги типа во время выполнения. Если вы хотите работать с числами, вам, как правило, придется упаковать их в какой-то теговый контейнер, на который вы можете указать (например, & # x201C; box & # x201D; им), поскольку нет способа отличить указатель от целое число машины во время выполнения без какой-либо схемы тегирования.

По соображениям эффективности большинство реализаций Lisp поэтому не используют необработанные указатели, а, как мне кажется, называют дескрипторами. Эти дескрипторы обычно представляют собой одно машинное слово, которое может представлять указатель, распакованное число (так называемоеfixnum) или одну из различных других жестко-закодированных структур данных (например, часто стоит кодировать NIL и, в частности, включать в себя ячейки).

Теперь, очевидно, если вы добавите тег типа, у вас не будет полных 32 битов, оставленных для числа, поэтому у вас останется 26 битов, как в схеме MIT, или 29 битов, как в Emacs, или любое другое количество битов, Вы не использовали теги.

Некоторые реализации различных динамических языков резервируют несколько тегов для фиксированных номеров, чтобы они могли предоставить 30-битные или даже 31-битные фиксированные. SBCL является одной из реализаций Common Lisp, котораяЯвляется ли это, Я не думаю, что осложнение, которое это вызывает, стоит того же для Emacs. Как часто вам нужна быстрая 30-битная арифметика с фиксном в отличие от 29-битной арифметики с фиксным числом вtext editor который даже не компилирует свой Lisp-код в машинный код (или это? Я не помню, на самом деле)? Вы пишете клиент на Dist.net в Emacs-Lisp? Тогда лучше переключитесь на Common Lisp! ;)

а. Это позволяет таким вещам, как сборщик мусора, знать, что такое указатель, а что нет, не догадываясь.

Почему тебя волнует, насколько велик Elisp Fixnum? Вы можете открыть гигантские файлы как есть.

почему фиксированные значения имеют ширину всего 29 бит. Но если вам нужен калькулятор программиста, посмотритеизвестково, Он предлагает целые числа произвольной точности, матричные операции, преобразования единиц, графику через gnuplot, статистические функции, финансовые функции, научные функции, RPN и алгебраическую запись, упрощение формул ... и это уже часть Emacs, так что для начала, посетите информационный узел для & quot; calc & quot; и начать с учебника.

(Вы можете получить большие целые числа, скомпилировав Emacs для 64-битной машины.)

Ваш ответ на вопрос