|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.10.2014, 18:25 | #1 |
Пользователь
Регистрация: 31.07.2014
Сообщений: 48
|
Как & возвращает адрес регистра?
Здравствуйте.
Каждый регистр стандартно состоит из 8 триггеров, то есть 1 байт = 8 бит. Не секрет что триггеры таким образом группируются, образуя машинное слово. Но, появился такой вопрос. У меня 32 разрядная среда компиляции C++ кода. Соответственно такой код: Код:
Вопрос заключается в следующем: Когда я сделаю так: Код:
Но, ведь под 32 бита выделяются смежные 4 регистра, так вот на какой именно из них возвращается адрес? Или может быть они там как-то виртуально контроллируются со стороны ОС, или быть может возвращается адрес на самый первый регистр в группе регистров, хранящих значение number, а после по той же истории как и с последовательным хранением данных типа array считывается значение? Мне лично кажется что здесь та же история что и с последовательным чтением адресов array с итерацией, только здесь сам компилятор на автомате читает таким образом регистры в ОЗУ, это в принципе и объясняет тот факт, что C++ строго типизированный язык программирования. Буду рад если проясните этот момент. Заранее спасибо за ответ. Последний раз редактировалось DakotaZ; 19.10.2014 в 18:29. |
19.10.2014, 18:35 | #2 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Цитата:
Цитата:
|
||
19.10.2014, 19:02 | #3 | |
Пользователь
Регистрация: 31.07.2014
Сообщений: 48
|
Объясните пожалуйста что такое эндианность?
Только без ссылки в википедию, там это слишком научно объясняется. Цитата:
И фактически программа ничего не знает об адресации триггеров и регистров, она запрашивает у процессора, процессор выдает поток битов. Верно? Последний раз редактировалось Stilet; 19.10.2014 в 19:32. |
|
19.10.2014, 20:48 | #4 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Цитата:
Цитата:
|
||
21.10.2014, 00:17 | #5 | |
Пользователь
Регистрация: 31.07.2014
Сообщений: 48
|
Цитата:
А двойное соответственно 16 бит. |
|
21.10.2014, 00:55 | #6 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
а про какую архитектуру речь?
"группировка тригерров в машинное слово" меня немного смущает. на х86, х64 проц читает из памяти по 32 или 64 байта (зависит от модели проца), так чтобы кеш линия была заполнена целиком. даже если программе нужен только один байт, из памяти будет прочитанно 32 либо 64 байта. адресация естесвенно котролируется системой и процом. |
21.10.2014, 03:39 | #7 | |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,604
|
Цитата:
В памяти место выделяется при выделении памяти из кучи оператором new или функцией malloc. Втыкать нужно в формат PE, а не в архитектуру процессора в данном случае. Рекомендую воспользоваться программой IDA Pro, чтобы понять.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
|
|
21.10.2014, 19:46 | #8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
|
21.10.2014, 21:01 | #9 |
Пользователь
Регистрация: 31.07.2014
Сообщений: 48
|
|
21.10.2014, 21:04 | #10 | |
Пользователь
Регистрация: 31.07.2014
Сообщений: 48
|
Цитата:
Получается что процессор к программе никакого отношения не имеет? странно... |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Почему Val возвращает 0 & 0? | Dynn | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 12.05.2014 14:07 |
Как убрать замену символьных ссылок(
 и т.д.) при сериализации(печати) xml? | hard-t | JavaScript, Ajax | 0 | 19.01.2012 09:50 |
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets | dmitrii6120 | Помощь студентам | 6 | 14.11.2011 20:10 |
C++/Абсолютный адрес регистра Ebp | coNsept | Общие вопросы C/C++ | 6 | 29.03.2011 12:56 |
как узнать ip адрес зная mac адрес | Roman | Работа с сетью в Delphi | 9 | 25.06.2007 12:39 |