LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Посмотрел еще набор твоих слов, не особо внимательно, может пропустил.

1. Но не нашел у тебя слова .s https://forth-standard.org/standard/tools/DotS

Без него неудобно, оно выводит все значения стека. gforth доступен под linux бесплатно, там можно посмотреть как оно работает:

Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
1 2 3 4 5  ok
+  ok
*  ok
.s <3> 1 2 27  ok

2. Так же у меня есть слово see https://forth-standard.org/standard/tools/SEE

Декомпилятор я пока не сделал, поэтому печатает hex слова. Но все равно удобнее чем вручную выковыривать.

3. Вывод числа на самом деле стоит начинать реализовывать в компиляторе не со слова ., а со слов форматирования <# sign # #>: https://forth.sourceforge.net/standard/fst83/fst83-12.htm#less-sharp

Если их реализуешь, то слово . будет выглядеть так:

: #u ( вывод unsigned ) # dup 0 <> if rec then #r ;
: #n ( вывод signed ) sign #u ;
: . <# #n #> type space ;

<# - просто инициализирует указатели на буфер временный, для строк и форматирования

# - делит свой аргумент на переменную BASE, и добавляет в буфер символ, который берет из CH:=NUMTABLE[Остаток]. NUMTABLE это 0123456789ABCDEF..., если остаток=0, то добавит символ нуля, если остаток 10, а такое может быть только если BASE>10, то добавит символ A, так уже выводятся hex-числа.

#r - ну этой мой костыль, оно просто переворачивает буфер, потому что цифры пишутся задом наперед у меня из за алгоритма

sign - если число отрицательное, то пишет в буфер знак -, и делает число положительным

#> - выдает строку которая получилась из буфера

type - печатает строку

space - печатает пробел

В чем преимущество? Возможностей большей, можно делать свое форматирование, и не будет ограничение на значения BASE. Я например часто BASE устанавливаю в двойку, что бы посмотреть бинарное представление числа. Можно устанавливать в 24, не знаю какая у этого может быть цель, просто прикольно.

Исправление MOPKOBKA, :

Посмотрел еще набор твоих слов, не особо внимательно, может пропустил.

1. Но не нашел у тебя слова .s https://forth-standard.org/standard/tools/DotS

Без него неудобно, оно выводит все значения стека. gforth доступен под linux бесплатно, там можно посмотреть как оно работает:

Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
1 2 3 4 5  ok
+  ok
*  ok
.s <3> 1 2 27  ok

2. Так же у меня есть слово see https://forth-standard.org/standard/tools/SEE

Декомпилятор я пока не сделал, поэтому печатает hex слова. Но все равно удобнее чем вручную выковыривать.

3. Вывод числа на самом деле стоит начинать реализовывать в компиляторе не со слова ., а со слов форматирования <# sign # #>: https://forth.sourceforge.net/standard/fst83/fst83-12.htm#less-sharp

Если их реализуешь, то слово . будет выглядеть так:

: #u ( вывод unsigned ) # dup 0 <> if rec then #r ;
: #n ( вывод signed ) sign #u ;
: . <# #n #> type space ;

<# - просто инициализирует указатели на буфер временный, для строк и форматирования

# - делит свой аргумент на переменную BASE, и добавляет в буфер символ, который берет из CH:=NUMTABLE[Остаток]. NUMTABLE это 0123456789ABCDEF..., если остаток=0, то добавит символ нуля, если остаток 10, а такое может быть только если BASE>10, то добавит символ A, так уже выводятся hex-числа.

#r - ну этой мой костыль, оно просто переворачивает буфер, потому что цифры пишутся задом наперед у меня из за алгоритма

sign - если число отрицательное, то пишет в буфер знак -, и делает число положительным

#> - выдает строку которая получилась из буфера

type - печатает строку

space - печатает пробел

В чем преимущество? Возможностей большей, можно делать свое форматирование, и не будет ограничение на значения BASE. Я например часто BASE устанавливаю в двойку, что бы посмотреть бинарное представление числа. Можно устанавливать в 24, не знаю какая у этого цель, просто прикольно.

Исправление MOPKOBKA, :

Посмотрел еще набор твоих слов, не особо внимательно, может пропустил.

1. Но не нашел у тебя слова .s https://forth-standard.org/standard/tools/DotS

Без него неудобно, оно выводит все значения стека. gforth доступен под linux бесплатно, там можно посмотреть как оно работает:

Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
1 2 3 4 5  ok
+  ok
*  ok
.s <3> 1 2 27  ok

2. Так же у меня есть слово see https://forth-standard.org/standard/tools/SEE

Декомпилятор я пока не сделал, поэтому печатает hex слова. Но все равно удобнее чем вручную выковыривать.

3. Вывод числа на самом деле стоит начинать реализовывать в компиляторе не со слова ., а со слов форматирования <# sign # #>: https://forth.sourceforge.net/standard/fst83/fst83-12.htm#less-sharp

Если их реализуешь, то слово . будет выглядеть так:

: #u ( вывод unsigned ) # dup 0 <> if rec then #r ;
: #n ( вывод signed ) sign #u ;
: . <# #n #> type space ;

<# - просто инициализирует указатели на буфер временный, для строк и форматирования

# - делит свой аргумент на переменную BASE, и добавляет в буфер символ, который берет из CH:=NUMTABLE[Остаток]. NUMTABLE это 0123456789ABCDEF..., если остаток=0, то добавит символ нуля, если остаток 10, а такое может быть только если BASE>10, то добавит символ A, так уже выводятся hex-числа.

#r - ну этой мой костыль, оно просто переворачивает буфер, потому что цифры пишутся задом наперед у меня из за алгоритма

sign - если число отрицательное, то пишет в буфер знак -, и делает число положительным

#> - выдает строку которая получилась из буфера

type - печатает строку

space - печатает пробел

В чем преимущество? Возможностей большей, можно делать свое форматирование, и не будет ограничение на значения BASE. Я например часто BASE устанавливаю в двойку, что бы посмотреть бинарное представление числа.

Исправление MOPKOBKA, :

Посмотрел еще набор твоих слов, не особо внимательно, может пропустил.

1. Но не нашел у тебя слова .s https://forth-standard.org/standard/tools/DotS

Без него неудобно, оно выводит все значения стека. gforth доступен под linux бесплатно, там можно посмотреть как оно работает:

Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
1 2 3 4 5  ok
+  ok
*  ok
.s <3> 1 2 27  ok

2. Так же у меня есть слово see https://forth-standard.org/standard/tools/SEE

Декомпилятор я пока не сделал, поэтому печатает hex слова. Но все равно удобнее чем вручную выковыривать.

3. Вывод числа на самом деле стоит начинать реализовывать в компиляторе не со слова ., а со слов форматирования <# sign # #>: https://forth.sourceforge.net/standard/fst83/fst83-12.htm#less-sharp

Если их реализуешь, то слово . будет выглядеть так:

: #u ( вывод unsigned ) # dup 0 <> if rec then #r ;
: #n ( вывод signed ) sign #u ;
: . <# #n #> type space ;

<# - просто инициализирует указатели на буфер временный, для строк и форматирования

# - делит свой аргумент на переменную BASE, и добавляет в буфер символ, который берет из NUMTABLE[Остаток]. NUMTABLE это 0123456789ABCDEF..., если остаток=0, то добавит символ нуля, если остаток 10, а такое может быть только если BASE>10, то добавит символ A, так уже выводятся hex-числа.

#r - ну этой мой костыль, оно просто переворачивает буфер, потому что цифры пишутся задом наперед у меня из за алгоритма

sign - если число отрицательное, то пишет в буфер знак -, и делает число положительным

#> - выдает строку которая получилась из буфера

type - печатает строку

space - печатает пробел

В чем преимущество? Возможностей большей, можно делать свое форматирование, и не будет ограничение на значения BASE. Я например часто BASE устанавливаю в двойку, что бы посмотреть бинарное представление числа.

Исходная версия MOPKOBKA, :

Посмотрел еще набор твоих слов, не особо внимательно, может пропустил.

1. Но не нашел у тебя слова .s https://forth-standard.org/standard/tools/DotS

Без него неудобно, оно выводит все значения стека. gforth доступен под linux бесплатно, там можно посмотреть как оно работает:

Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
1 2 3 4 5  ok
+  ok
*  ok
.s <3> 1 2 27  ok

2. Так же у меня есть слово see https://forth-standard.org/standard/tools/SEE

Декомпилятор я пока не сделал, поэтому печатает hex слова. Но все равно удобнее чем вручную выковыривать.

3. Вывод числа на самом деле стоит начинать не со слова ., а со слов форматирования <# sign # #>: https://forth.sourceforge.net/standard/fst83/fst83-12.htm#less-sharp

Если их реализуешь, то слово . будет выглядеть так:

: #u ( вывод unsigned ) # dup 0 <> if rec then #r ;
: #n ( вывод signed ) sign #u ;
: . <# #n #> type space ;

<# - просто инициализирует указатели на буфер временный, для строк и форматирования

# - делит свой аргумент на переменную BASE, и добавляет в буфер символ, который берет из NUMTABLE[Остаток]. NUMTABLE это 0123456789ABCDEF..., если остаток=0, то добавит символ нуля, если остаток 10, а такое может быть только если BASE>10, то добавит символ A, так уже выводятся hex-числа.

#r - ну этой мой костыль, оно просто переворачивает буфер, потому что цифры пишутся задом наперед у меня из за алгоритма

sign - если число отрицательное, то пишет в буфер знак -, и делает число положительным

#> - выдает строку которая получилась из буфера

type - печатает строку

space - печатает пробел

В чем преимущество? Возможностей большей, можно делать свое форматирование, и не будет ограничение на значения BASE. Я например часто BASE устанавливаю в двойку, что бы посмотреть бинарное представление числа.