Date: 2021-10-20 11:09 am (UTC)
x86128: (Default)
From: [personal profile] x86128
Есть и тут "кринжовинка".

Из-за того что в выражениях терм (слагаемое) определен так:
term = factor {("*" | "DIV" | "MOD" | "&") factor}.
А выражение в фигурных скобках по книге Вирта это цикл while, получается что арифметическое выражение вида: 5 * 4 / 2 & 15 проблем не вызовет и обойдется без использования стека, а вот такое (3 + 5) / (10 - 8) уже будет вынуждено вытолкнуть числитель чтобы посчитать знаменатель, а потом обменять стек и акк и выполнить деление, так как в отличии от X-A у нас нет X/A.

В репертуаре БЭСМ я нашел такую инструкцию - STX, согласно формуле (и коду Диспак) она работает так X = A; A = mem[--M[017]]; поэтому использую такой хак:

STX 0,M15
A/X 1,M15

По количеству операций с памятью вроде бы и не плохо даже :)
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

x86128: (Default)
x86128

April 2023

S M T W T F S
      1
2345678
9101112131415
16171819202122
232425 26272829
30      

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 23rd, 2025 02:13 am
Powered by Dreamwidth Studios