| 
| 
 | Вопрос # 6 169/ вопрос закрыт / | 
 |  Здравствуйте, эксперты! Так до конца и не разобрался, для чего все-таки нужны регистры. Имеется цитата:Регистры нужны для связи процессора с внешним миром. Записать или считать из памяти возможно только с использованием регистров.
 А как же вот такая запись: MOV [401850],[401950]? Значит, все таки регистры необязательны при доступе к памяти? Очень рассчитываю на вашу помощь!
 
|  |   Вопрос задал: Phantom (статус: Посетитель)Вопрос отправлен: 28 мая 2012, 11:30
 Состояние вопроса: закрыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Бородеев Илья Вадимович!Данная конструкция не скомпилируется, так как нет соответствующего кода (не знаю, как на самых распоследних процессорах, но на 486 и младше точно нет). Поэтому данную конструкцию придется делать в два этапа через регистр. Более того, может быть, что некоторые компиляторы смогут скомпилировать этот код, заменив его на push eax MOV [401950], eax MOV eax, [401850] pop eax или что то подобное.
 
 Но у регистров есть существенное преимущество - они очень быстры. На современных процессорах по сравнению с памятью это может быть в 100-200 раз (если кеширование не сработало).
 
 А цитата
 Цитата: Регистры нужны для связи процессора с внешним миром. - это немного не о тех регистрах. И регистры eax, ax, sp, ecx и подобные могут быть в этом списке, а могут и не быть. Нужно смотреть по контексту. 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 28 мая 2012, 11:52
 Оценка за ответ: 5
 Комментарий к оценке: То есть разница главным образом в скорости? Можно ли записывать в память данные без занесения адреса(по которому осуществляется запись данных)  в регистр? |  
 Мини-форум вопросаВсего сообщений: 6; последнее сообщение — 29 мая 2012, 23:55; участников в обсуждении: 5. 
|   | DNK (статус: Студент), 28 мая 2012, 13:10 [#1]:Сколько людейпроцессоров - столько имненийассемблеров."Digital Networked Knight" |  
|   | Вадим К (статус: Академик), 28 мая 2012, 23:04 [#2]: Цитата: То есть разница главным образом в скорости? Нет конечно же. С регистрами процессора можно делать много интересных вещей
  
 
 Цитата: Можно ли записывать в память данные без занесения адреса(по которому осуществляется запись данных) в регистр? Если я правильно помню, то на х86 процессорах либо данные, либо адрес памяти должен быть в регистре (либо оба). Но что бы и то, и другое было задано явно - вроде нельзя.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Толяныч (статус: 4-ый класс), 29 мая 2012, 01:34 [#3]:Если брать не только РС-совместимые компы, а к примеру СМ-4 ( клон  PDP-11 ), то там допускались все операции типа память-память без ограничений. Но при этом операнд загружался в промежуточный недоступный из программы регистр, но для программиста это было не видно - он использовал как команду память-память. |  
|   | Phantom (статус: Посетитель), 29 мая 2012, 18:25 [#4]:значит на X86, чтобы считать данные из одной ячейки памяти в другую, необходимо содержимое одной из них разместить в регистре? |  
|   | bugmenot (статус: 3-ий класс), 29 мая 2012, 21:53 [#5]:Ну, для копирования память-память существует множество способов. 
 
 MOV ESI, 401950
MOV EDI, 401850
MOVSD виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Phantom (статус: Посетитель), 29 мая 2012, 23:55 [#6]:Спасибо, напомнили о существовании индексных регистров   |  4 июня 2012, 11:49: Вопрос закрыт (решение принял DNK): Похоже ликбез окончен Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |