Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 22:19

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Quark: команды сканирования битов
Автор Сообщение
  Заголовок сообщения:  Re: Quark: команды сканирования битов  Ответить с цитатой
Помечаю себе как ToDo для следующего билда кварка. Требуется работа с битами и битовыми полями, поэтому будет проверка отдельных разрядов и сброс/установка.
Сообщение Добавлено: Чт май 19, 2016 17:04
  Заголовок сообщения:   Ответить с цитатой
dynamic-wind писал(а):
set-bit = bis, or ('bit set' pdp-11)
clr-bit = bic ('bit clear' на arm, pdp-11)
get-bit = ldb

Вообще можно, но оно делается с помощью AND и OR с соответствующей битовой маской, так что команда в Форте превращается в приятное дополнение. А вот поиск старшего/младшего значащего бита уже чуть посложнее, требует дополнительного внимания, тестирования слова в проекте, а также занимает лишнее время, поскольку пишется на чистом Форте. Отсылка к машинным командам тут разом убивает ворох проблем.
Сообщение Добавлено: Ср фев 17, 2010 00:42
  Заголовок сообщения:   Ответить с цитатой
Н-да, опыт показывает. что
1. длительная работа над названием необходима - во избежание легкомысленного
2. работа не должна быть в духе "а вот можно ещё" - признак плохой, бесконечно перебирать можно
Сообщение Добавлено: Вт фев 16, 2010 21:25
  Заголовок сообщения:   Ответить с цитатой
garbler писал(а):
так что можно назввать слова как-нибудь вроде msbi и lsbi
(most significant bit index / least significant bit index)

А чем еще может характеризоваться наиболее/наимение значимый бит, кроме
номера своего места? Пусть будет MSB и LSB, по-моему это лучше чем FFS/FLS.
Вот еще полезная операция:
Код:
CHANGE-BITS ( n N1 N2 -- n')  обмен битов

тоже длинное название.
Сообщение Добавлено: Вт фев 16, 2010 21:22
  Заголовок сообщения:   Ответить с цитатой
вообще-то есть ещё мнемоники msb и lsb (most significant bit / least significant bit)
так что можно назввать слова как-нибудь вроде msbi и lsbi
(most significant bit index / least significant bit index)
Сообщение Добавлено: Вт фев 16, 2010 20:42
  Заголовок сообщения:   Ответить с цитатой
В форт лучше тащить из ассемблеров
Сообщение Добавлено: Вт фев 16, 2010 15:33
  Заголовок сообщения:   Ответить с цитатой
set-bit = bis, or ('bit set' pdp-11)
clr-bit = bic ('bit clear' на arm, pdp-11)
get-bit = ldb

У pdp-10 были команды ldb (load byte) и dpb (deposit byte). они вообще могли извлекать/замещать битовое поле заданной длины, начиная с заданного бита. Потом в маклиспе и коммон-лиспе появились функции с такими названиями. Можно и в Форт такое перетащить ;)
Сообщение Добавлено: Вт фев 16, 2010 15:03
  Заголовок сообщения:   Ответить с цитатой
dynamic-wind писал(а):
Большой ПЛЮС этих названий: не надо придумывать новые аббревиатуры.

А на счет таких, тоже полезных, конструкций:
Код:
SET-BIT ( n N -- n')   установить бит N
CLR-BIT ( n N -- n')   cброcить бит N
GET-BIT ( n N -- 0|1)  дать значение бита N
есть уже готовые названия?
Сообщение Добавлено: Вт фев 16, 2010 13:26
  Заголовок сообщения:   Ответить с цитатой
Цитата:
В принципе можно. У меня, однако, вызывают некоторую настороженность мнемоники с дефисами и неполным написанием слов.
именно поэтому всякому языку желательно опиратся на какие-то грамматически-лексические условности
Сообщение Добавлено: Пн фев 15, 2010 23:18
  Заголовок сообщения:   Ответить с цитатой
dynamic-wind писал(а):
Историческая ваксовая команда FFS: возвращяет номер младшего 1-го бита плюс 1 (то есть 1..33) либо 0
С тех пор у сишников есть ffs() и fls() (для поиска в обратном направлении).
Большой ПЛЮС этих названий: не надо придумывать новые аббревиатуры.

Хороший вариант.
Сообщение Добавлено: Пн фев 15, 2010 22:27
  Заголовок сообщения:   Ответить с цитатой
Можно LOB HIB - вроде, нигде не попадалось и коротко... ;)
Сообщение Добавлено: Пн фев 15, 2010 19:52
  Заголовок сообщения:   Ответить с цитатой
а еще где-то было LBIT и RBIT , если не ошибаюсь
Сообщение Добавлено: Пн фев 15, 2010 19:15
  Заголовок сообщения:   Ответить с цитатой
Историческая ваксовая команда FFS: возвращяет номер младшего 1-го бита плюс 1 (то есть 1..33) либо 0
С тех пор у сишников есть ffs() и fls() (для поиска в обратном направлении).
Большой ПЛЮС этих названий: не надо придумывать новые аббревиатуры.
Сообщение Добавлено: Пн фев 15, 2010 18:55
  Заголовок сообщения:   Ответить с цитатой
chess писал(а):
Я назвал бы LO-BIT и HI-BIT

В принципе можно. У меня, однако, вызывают некоторую настороженность мнемоники с дефисами и неполным написанием слов. Потому что LO-BIT также можно написать как LOW-BIT, а также LOWBIT LOW_BIT LO_BIT и т.п.
Сообщение Добавлено: Пн фев 15, 2010 11:16
  Заголовок сообщения:   Ответить с цитатой
Хищник писал(а):
Пока предполагается синтаксис вида BSF, BSR, потому что подходящих мнемоник для этого случая не припомню. Разве что SCANLEFT, SCANRIGHT... но все равно безусловно подходящего варианта как-то не видится.

Я назвал бы LO-BIT и HI-BIT

Код:
: LO-BIT ( n -- i) A=L\A L1 J0= A++ L1: ;  SEE LO-BIT

: HI-BIT ( n -- i) A=H\A L1 J0= A++ L1: ;  SEE HI-BIT

\ TEST

CR
0 LO-BIT .
1 LO-BIT .
0 HI-BIT .
0x80000000 HI-BIT .

LOG
Код:
CODE LO-BIT
5AEB5F 0FBCC0           BSF     EAX , EAX
5AEB62 7401             JE      5AEB65
5AEB64 40               INC     EAX
5AEB65 C3               RET     NEAR
END-CODE
( 7 bytes, 4 instructions )


CODE HI-BIT
5AEB7B 0FBDC0           BSR     EAX , EAX
5AEB7E 7401             JE      5AEB81
5AEB80 40               INC     EAX
5AEB81 C3               RET     NEAR
END-CODE
( 7 bytes, 4 instructions )

0 1 0 32
Ok
Сообщение Добавлено: Пн фев 15, 2010 09:54

Часовой пояс: UTC + 3 часа [ Летнее время ]


cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB