Редактирование:
Слово @
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == Слово @ универсальное. Оно позволяет считывать как [[десятичное число]], так 16-битное целое со знаком и даже обращаться к [[Регистры функций МК|регистрам функций]]. Хотя для последнего крайне рекомендуется использовать [[слово ИП]]. Если a указывает на байтовую память (диапазоны 0…9999 и 11000…18167), из [[Ячейка (Каллисто)|двухбайтовой ячейки]] по [[Единое адресное пространство|адресам]] a и a+1 (старший и младший байт соответственно) считывается 16-битное [[Шестнадцатеричный формат|двоичное]] целое со знаком x (x меняется от -32768 до 32767). Если вам надо считать 16-битное целое без знака, используйте более быстрое слово [[U@]]. <pre> 2147 ;#Fetch 2148 ; @ ( a −− x ) Извлечь. Считать значение ячейки по адресу a. 2149 ; Заместить адрес в стеке его содержимым, двухбайтовая ячейка содержит число со знаком. 2150 ; Также может считать десятичный регистр, если адрес указывает на него. 2151 ; Слово @ не предназначено для считывания регистров функций! 2152 LAT: .DB 1 2153 .TEXT "@" ; ( адрес −− целое) 2154 .DW LTOGL 2155 AT: .DW JAT 2156 JAT: PKRM03 2157 MA 1 2158 EE 4 − FX>=0 AT1 2159 MA M5 1000 − FX>=0 AT2 ; 1000 быстрее, чем 1 ВП 3 2160 KRMA 128 − PX>=0 UAT0 2161 RME ∗ KRM5 2162 GOTO AT01 2163 AT2: KRMA PKM03 KGOTO9 2164 AT1: RMA KPRGM 128 − PX>=0 UAT1 2165 RME ∗ RMA 1 + KPRGM 2166 AT01: + 2167 32768 − PKM03 KGOTO9 … 2181 UAT0: KRMA RME ∗ KRM5 + PKM03 KGOTO9 ; Сюда есть переход из @ 2182 UAT1: RMA KPRGM RME ∗ ; Сюда есть переход из @ 2183 RMA 1 + KPRGM + 2184 PKM03 KGOTO9 </pre> Реализация из SP-Forth 4.20: <pre> \ ================================================================ \ Операции с памятью CODE @ ( a-addr -- x ) \ 94 \ x - значение по адресу a-addr. MOV EAX, [EAX] RET END-CODE </pre> === Советская реализация === Слово @ в ФОРТ-ЕС и FORTH ИТЭФ также было [[примитив]]ом. Вот описание и определение @ из ФОРТ-ЕС: <PRE> @ А->W ДАТЬ ЗНАЧЕНИЕ ПО АДРЕСУ А 11 Экран номер 11 ( 31.03.86 ! 0! @ С! С@ , С, EXECUTE ) CODE @ ( А->W РАЗЫМЕНОВАТЬ A) RW2 PULL, RW2 RMASK NR, RW1 0 (, RW2 RFORTH LH, PUTRW1 B, END-CODE </PRE> Вот определение @ из FORTH ИТЭФ: <PRE> HEAD 201Q,,300Q,AT ; @ POP BX PUSH [BX] NEXT </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице