Кто знает как быстрее всего на автокоде swap Cумматор <-> П(М15-1) A<->B15 AEX -1 #A^B +115 ATX #*(SP++)=A^B +1YTA #A15 ATX -2 #*(SP-2)=A +115 AEX #A^*(--SP) //A^(A^B) +14 обращения к кешу
и сколько тактов мне трудно сказать...Кто меньше?
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/besm6/f1a2667e-c849-45bc-969a-eb268dce1bcbn%40googlegroups.com.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/33661cc3-a675-47f7-b0a1-e04b44f91ee8n%40googlegroups.com.
Что касается spill, то запись регистра в память, не изменяя сумматор, делается тоже двумя командами,
,ITS,reg
,STX,location
...Leo
On Friday, February 28, 2025 at 10:33:24 AM UTC-8 Леонид Брухис wrote:
Писать в память, минуя сумматор, было в принципе невозможно, а установить регистр по содержимому памяти, не трогая сумматор, тривиально:
МОД ячейка
УИА (регистр)или, если угодно,
,WTC,locationreg,VTM,Leo
....
Кто знает быстрый способ деления/умножения на 2 чисел в аккумуляторе чисел с нормализацией и без? /*т.е. фактически целых и дробных*/
26 марта 2025 г., в 8:53 PM, Leo B. <leo...@gmail.com> написал(а):
On Wednesday, March 26, 2025 at 12:39:15 PM UTC-7 oxy...@gmail.com wrote:Кто знает быстрый способ деления/умножения на 2 чисел в аккумуляторе чисел с нормализацией и без? /*т.е. фактически целых и дробных*/При включенной нормализации самый быстрый способ умножить число с плавающей точкой на 2 - это инкрементировать его порядок (,E+N,64+1 )
При выключенной нормализации, если целое число без порядка, то, очевидно, просто сдвинуть влево на разряд (,ASN,64-1)
При выключенной нормализации, если целое число представленно как денормализованное с порядком (64000...000nnnn),то сложить его с собой (15,ATX, и 15,A+X,)
Как бы безвариантно. Не командой умножения же пользоваться.Leo
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на одну из тем в группе "БЭСМ-6".
Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/besm6/l1nwBCh0TLY/unsubscribe.
Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/95cf31fc-5a9c-4c27-bed6-45841b41aac0n%40googlegroups.com.
При включенной нормализации самый быстрый способ умножить число с плавающей точкой на 2 - это инкрементировать его порядок (,E+N,64+1 )Получается без дополнительного обращения к памяти, да еще на заданное число в регисте раз? Круто.Только две разные команда для сдвига влево/право /*умножения/деления*/?
При выключенной нормализации, если целое число без порядка, то, очевидно, просто сдвинуть влево на разряд (,ASN,64-1)А эта команда позволяла и делить и умножать в зависимости от эффективного адреса B=Mi + A ? Или надо было ловить старшие разряды в Y?
При выключенной нормализации, если целое число представленно как денормализованное с порядком (64000...000nnnn),то сложить его с собой (15,ATX, и 15,A+X,)
Вот больше всего меня беспокоил этот вариант - два обращения к кешу.И по сути не принципиально быстрее чем , A*X , = 2 если в цикле и 2-ка будет закеширована.Или можно:, ASN, 64-1
, E+N, B’014 - ?????
А деление? Тут получается , A*X , = .5 ?
Или:, ASN, 64-65 - ???????
, E+N, B’032:)
26 марта 2025 г., в 23:28, Alex Loktionoff <oxy...@gmail.com> написал(а):
26 марта 2025 г., в 8:53 PM, Leo B. <leo...@gmail.com> написал(а):On Wednesday, March 26, 2025 at 12:39:15 PM UTC-7 oxy...@gmail.com wrote:Кто знает быстрый способ деления/умножения на 2 чисел в аккумуляторе чисел с нормализацией и без? /*т.е. фактически целых и дробных*/При включенной нормализации самый быстрый способ умножить число с плавающей точкой на 2 - это инкрементировать его порядок (,E+N,64+1 )Получается без дополнительного обращения к памяти, да еще на заданное число в регисте раз? Круто.Только две разные команда для сдвига влево/право /*умножения/деления*/?При выключенной нормализации, если целое число без порядка, то, очевидно, просто сдвинуть влево на разряд (,ASN,64-1)А эта команда позволяла и делить и умножать в зависимости от эффективного адреса B=Mi + A ? Или надо было ловить старшие разряды в Y?При выключенной нормализации, если целое число представленно как денормализованное с порядком (64000...000nnnn),то сложить его с собой (15,ATX, и 15,A+X,)Вот больше всего меня беспокоил этот вариант - два обращения к кешу.И по сути не принципиально быстрее чем , A*X , = 2 если в цикле и 2-ка будет закеширована.Или можно:, ASN, 64-1, E+N, B’014А деление? Тут получается , A*X , = .5 ?
А деление? Тут получается , A*X , = .5 ?плавающее "деление пополам» - только так…
27 марта 2025 г., в 09:33, Leo B. <leo...@gmail.com> написал(а):
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/51B6E7EE-80E1-45EF-95A7-AE0FF97C2DC1%40gmail.com.
27 марта 2025 г., в 17:42, Leo B. <leo...@gmail.com> написал(а):
Кто знает как быстрее всего на автокоде swap Cумматор <-> П(М15-1) A<->B
Кто знает интринсики gcc/clang аналогичные командам упаковки/распаковки APX/AUX ?
Вообще очень понятные команды, можно использовать для всего. Для БЭСМ6 нет понятия endianess процессора, как хочешь так и пиши. Только вот реализованы они были очень просто и медленно, но это совсем другая история.
On Tuesday, April 1, 2025 at 12:35:05 PM UTC-7 oxy...@gmail.com wrote:Кто знает интринсики gcc/clang аналогичные командам упаковки/распаковки APX/AUX ?Боюсь, нет таких интринсиков.
Вообще очень понятные команды, можно использовать для всего. Для БЭСМ6 нет понятия endianess процессора, как хочешь так и пиши. Только вот реализованы они были очень просто и медленно, но это совсем другая история.О да. Было дело, пытался я когда-то синтезировать комбинационную логику, реализующую эти операции. Получились бешеные тысячи LUTs.Leo
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/c9da791c-fe07-4b09-94ea-b5beb568cab4n%40googlegroups.com.
9 РRОGRА: ,ЕNТRУ,
8 , LOC , 1000B
7 MAIN: 7 , VТМ , *С
6 , NTR , 3
5 , САLL, OKHO
4 7 , XTA , X-*С
3 , САLL, OKHO
2 7 , А+X , Y-*С
1 , САLL, OKHO
0 , E+N , 64+64
1 , САLL, OKHO
LIВRАRУ ОТ 26.02.82 М3
*NО LОАD LISТ
*МАIN МАIN
*ЕХЕСUТЕ
0000000000000000 003 03122 00000 06614 73254 03271 10012 01015 26515 03656 00610 00000 77774 01002 00770 75402
0000000000000123 007 03122 00000 06614 73254 03271 10012 01015 26515 03656 00610 00000 77774 01003 00770 75402
0000000000000123 023 03122 00000 06614 73254 03271 10012 01015 26515 03656 00610 00000 77774 01004 00770 75402
0000000000000000 013 03122 00000 06614 73254 03271 10012 01015 26515 03656 00610 00000 77774 01005 00770 75402
On Wednesday, March 26, 2025 at 1:28:34 PM UTC-7 oxy...@gmail.com wrote:При включенной нормализации самый быстрый способ умножить число с плавающей точкой на 2 - это инкрементировать его порядок (,E+N,64+1 )Получается без дополнительного обращения к памяти, да еще на заданное число в регисте раз? Круто.Только две разные команда для сдвига влево/право /*умножения/деления*/?Поделить на 2, соответственно, ,E+N,64-1 (или, если угодно, ,E-N,64+1)
Не помешает внимательно изучить, как работают команды корректировки порядка.
Leo
хе хе, ищущий да обрящет
широко известные в узких кругах интринсики являютя 100% аналогами:#include <immintrin.h>_pdep_u64(src, mask);_pext_u64(src, mask);Появились инструкции позновато, только начиная с haswell и появляются только при компиляции начиная с -mbmi2deppextесть соответствующие builtin-ы, для них заголовок подключать ненадо, но все равно компиляция падает без -mbmi2__builtin_ia32_pdep_di(src, mask);__builtin_ia32_pext_di(src, mask);
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/090e2519-a4f9-4372-a463-bdefa93cd7c3n%40googlegroups.com.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/238773cc-4942-4bf9-9659-96623b3ed5e5n%40googlegroups.com.
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/ec9d70c1-ba9c-4f56-ad46-99467881e349n%40googlegroups.com.
Традиционно билист в Дубне управляется картой*CALL PUTFLAG*
40Где 40 это бит отмены билиста
М.П.
18 15 , ATX ,
1 , AAX , =200
2 , UZA , NOSEX
3 , XTA , =6437777777777200
4 NOSEX :15 , AOX ,
--
Данное сообщение отправлено Вам, как участнику группы "БЭСМ-6":
http://groups.google.com/group/besm6/topics
---
Вы получили это сообщение, поскольку подписаны на группу "БЭСМ-6".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес besm6+un...@googlegroups.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/902876b6-a487-4e5f-9bfd-d975ec656c7dn%40googlegroups.com.
Видно все отдыхают ,,,,
как-то вот так
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAHBB7Y5hkGwew9Oou-5JTw_Z%2Bg9tCMuYG_nXGz2sbn9T89%2BFow%40mail.gmail.com.
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CADLwzue5Fovq%2BXVdjPmDpbj6z9SkDCHT1zCyUadH2NZyY_AtFQ%40mail.gmail.com.
не вижу разницы в результате, и там и там размножается 8 бит
Чтобы посмотреть обсуждение, перейдите по ссылке https://groups.google.com/d/msgid/besm6/CAHBB7Y4YVgy_vcV_em3vf71fxf4J92hWDn5Eh7WNa2F1zXtitA%40mail.gmail.com.
Кто знает как быстрее всего на автокоде swap Cумматор <-> П(М15-1) A<->B15 AEX -1 #A^B +115 ATX #*(SP++)=A^B +1YTA #A15 ATX -2 #*(SP-2)=A +115 AEX #A^*(--SP) //A^(A^B) +14 обращения к кешу и сколько тактов мне трудно сказать...Кто меньше?