Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Quark: команды сканирования битов |
|
|
Помечаю себе как ToDo для следующего билда кварка. Требуется работа с битами и битовыми полями, поэтому будет проверка отдельных разрядов и сброс/установка.
Помечаю себе как 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 с соответствующей битовой маской, так что команда в Форте превращается в приятное дополнение. А вот поиск старшего/младшего значащего бита уже чуть посложнее, требует дополнительного внимания, тестирования слова в проекте, а также занимает лишнее время, поскольку пишется на чистом Форте. Отсылка к машинным командам тут разом убивает ворох проблем.
[quote="dynamic-wind"]set-bit = bis, or ('bit set' pdp-11) clr-bit = bic ('bit clear' на arm, pdp-11) get-bit = ldb [/quote]
Вообще можно, но оно делается с помощью AND и OR с соответствующей битовой маской, так что команда в Форте превращается в приятное дополнение. А вот поиск старшего/младшего значащего бита уже чуть посложнее, требует дополнительного внимания, тестирования слова в проекте, а также занимает лишнее время, поскольку пишется на чистом Форте. Отсылка к машинным командам тут разом убивает ворох проблем.
|
|
|
|
Добавлено: Ср фев 17, 2010 00:42 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Н-да, опыт показывает. что
1. длительная работа над названием необходима - во избежание легкомысленного
2. работа не должна быть в духе "а вот можно ещё" - признак плохой, бесконечно перебирать можно
Н-да, опыт показывает. что
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') обмен битов
тоже длинное название.
[quote="garbler"]так что можно назввать слова как-нибудь вроде msbi и lsbi (most significant bit index / least significant bit index)[/quote]
А чем еще может характеризоваться наиболее/наимение значимый бит, кроме
номера своего места? Пусть будет MSB и LSB, по-моему это лучше чем FFS/FLS.
Вот еще полезная операция:
[code]CHANGE-BITS ( n N1 N2 -- n') обмен битов [/code]
тоже длинное название.
|
|
|
|
Добавлено: Вт фев 16, 2010 21:22 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
вообще-то есть ещё мнемоники msb и lsb (most significant bit / least significant bit)
так что можно назввать слова как-нибудь вроде msbi и lsbi
(most significant bit index / least significant bit index)
вообще-то есть ещё мнемоники 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). они вообще могли извлекать/замещать битовое поле заданной длины, начиная с заданного бита. Потом в маклиспе и коммон-лиспе появились функции с такими названиями. Можно и в Форт такое перетащить
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 есть уже готовые названия?
[quote="dynamic-wind"]Большой ПЛЮС этих названий: не надо придумывать новые аббревиатуры.[/quote]
А на счет таких, тоже полезных, конструкций:
[code]SET-BIT ( n N -- n') установить бит N CLR-BIT ( n N -- n') cброcить бит N GET-BIT ( n N -- 0|1) дать значение бита N[/code]есть уже готовые названия?
|
|
|
|
Добавлено: Вт фев 16, 2010 13:26 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Цитата: В принципе можно. У меня, однако, вызывают некоторую настороженность мнемоники с дефисами и неполным написанием слов. именно поэтому всякому языку желательно опиратся на какие-то грамматически-лексические условности
[quote]В принципе можно. У меня, однако, вызывают некоторую настороженность мнемоники с дефисами и неполным написанием слов. [/quote] именно поэтому всякому языку желательно опиратся на какие-то грамматически-лексические условности
|
|
|
|
Добавлено: Пн фев 15, 2010 23:18 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
dynamic-wind писал(а): Историческая ваксовая команда FFS: возвращяет номер младшего 1-го бита плюс 1 (то есть 1..33) либо 0 С тех пор у сишников есть ffs() и fls() (для поиска в обратном направлении). Большой ПЛЮС этих названий: не надо придумывать новые аббревиатуры.
Хороший вариант.
[quote="dynamic-wind"]Историческая ваксовая команда FFS: возвращяет номер младшего 1-го бита плюс 1 (то есть 1..33) либо 0 С тех пор у сишников есть ffs() и fls() (для поиска в обратном направлении). Большой ПЛЮС этих названий: не надо придумывать новые аббревиатуры.[/quote]
Хороший вариант.
|
|
|
|
Добавлено: Пн фев 15, 2010 22:27 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Можно LOB HIB - вроде, нигде не попадалось и коротко...
Можно LOB HIB - вроде, нигде не попадалось и коротко... ;)
|
|
|
|
Добавлено: Пн фев 15, 2010 19:52 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
а еще где-то было LBIT и RBIT , если не ошибаюсь
а еще где-то было LBIT и RBIT , если не ошибаюсь
|
|
|
|
Добавлено: Пн фев 15, 2010 19:15 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Историческая ваксовая команда FFS: возвращяет номер младшего 1-го бита плюс 1 (то есть 1..33) либо 0
С тех пор у сишников есть ffs() и fls() (для поиска в обратном направлении).
Большой ПЛЮС этих названий: не надо придумывать новые аббревиатуры.
Историческая ваксовая команда 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 и т.п.
[quote="chess"]Я назвал бы LO-BIT и HI-BIT [/quote]
В принципе можно. У меня, однако, вызывают некоторую настороженность мнемоники с дефисами и неполным написанием слов. Потому что 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
[quote="Хищник"]Пока предполагается синтаксис вида BSF, BSR, потому что подходящих мнемоник для этого случая не припомню. Разве что SCANLEFT, SCANRIGHT... но все равно безусловно подходящего варианта как-то не видится.[/quote]
Я назвал бы LO-BIT и HI-BIT
[code]: 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 .[/code] LOG [code]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 [/code]
|
|
|
|
Добавлено: Пн фев 15, 2010 09:54 |
|
|
|
|