Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2015, 14:25   #1
Lmt32
Новичок
Джуниор
 
Регистрация: 16.12.2015
Сообщений: 3
По умолчанию Вопрос про оперативную память

Доброго времени суток!

Недавно начал самостоятельно изучать ассемблер и все,что с ним связанно,и возникли вопросы :

Программа после запуска загружается в оперативную память,затем процессор начинает выполнять эти самые машинные команды. Оперативка,с точки зрения процессора,как я понял, - это просто последовательность байтов,как длинный поезд,где вагоны - это байты?
Собственно вопросы :

1) по какому принципу выбирается место в оперативке куда загрузится выполняемая нами программа - на место 5 или 8 вагона(при условии,что оба свободны)?
2) В регистре (E)IP,получается, хранится физический(или логический ) адрес в оперативной памяти самой первой команды(условно 5 вагон)?

Спасибо за помощь!
Lmt32 вне форума Ответить с цитированием
Старый 16.12.2015, 14:32   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

тут бы не помешало указание об ОС.
допустим винда.
обычно берется первый свободный вагон.(она же страница памяти) насчет оптимизаций на тему что поискать кусок именно нужного места(несколько вагонов подряд), но я тут хз.
второе же EIP показывает логический адрес, то есть адрес внутри ваших вагонов, в чужие вагоны просто так вам не войти.
причем если вагоны не подряд, то адреса все равно выглядят так словно они рядом.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.12.2015, 14:39   #3
Lmt32
Новичок
Джуниор
 
Регистрация: 16.12.2015
Сообщений: 3
По умолчанию

Спасибо за ответ!
То есть,если грубо говоря наша программа - это,условно,10 машинных команд, при загрузке в оперативку, эти 10 команд могут раскидаться как угодно(а не по порядочку) ,но адреса все равно будут выглядеть как будто они рядом? А есть ли смысл раскидывать их,если есть возможность сложить по по порядочку - в 3,4,5 вагоны-байты (условно)?
Чужие вагоны Вы имеете ввиду - другие программы,уже загруженные в оперативку?
Lmt32 вне форума Ответить с цитированием
Старый 16.12.2015, 15:02   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Цитата:
То есть,если грубо говоря наша программа - это,условно,10 машинных команд, при загрузке в оперативку, эти 10 команд могут раскидаться как угодно(а не по порядочку)
10 команд это слишком мало и скорее всего они будут рядом

Цитата:
А есть ли смысл раскидывать их,если есть возможность сложить по по порядочку - в 3,4,5 вагоны-байты (условно)?
Если возможность есть, то хорошо ж... А что если часть местов занята? А если оно есть, но где-то в конце и надо искать? А если...
p51x вне форума Ответить с цитированием
Старый 16.12.2015, 15:10   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
последовательность байтов,как длинный поезд,где вагоны - это байты?
Вагон это страница памяти,
а байт это номер места в вагоне.
вагоны цепляются в произвольном порядке, а места в вагоне заданы жестко.
общий номер байта = номер вагона * число мест + номер места в вагоне.

при страничной организации памяти
Цитата:
обычно берется первый свободный вагон.(она же страница памяти)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 16.12.2015, 15:59   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
То есть,если грубо говоря наша программа - это,условно,10 машинных команд, при загрузке в оперативку, эти 10 команд могут раскидаться как угодно(а не по порядочку) ,но адреса все равно будут выглядеть как будто они рядом?
да, и вы этого даже не узнаете.
Цитата:
Чужие вагоны Вы имеете ввиду - другие программы,уже загруженные в оперативку?
да.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.12.2015, 21:32   #7
Lmt32
Новичок
Джуниор
 
Регистрация: 16.12.2015
Сообщений: 3
По умолчанию

Спасибо всем за ответы!
Lmt32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение файла в оперативную память rostik123 Win Api 1 06.11.2012 04:59
Отображение файла в оперативную память rostik123 Общие вопросы C/C++ 3 29.10.2012 20:02
Картинку в оперативную память MORPEH Мультимедиа в Delphi 1 12.03.2012 01:35
Узнаем оперативную память и объем диска bigory Общие вопросы по Java, Java SE, Kotlin 4 19.09.2010 11:14
Как чистить оперативную память??? Altera Операционные системы общие вопросы 10 16.05.2008 14:52