Программное обеспечение

Как устроена память в программах

Странный вопрос. В шапке я вряд ли могу уместить суть вопроса, потому основное будет здесь.
К примеру игра хранит множество значений в себе. Где хранит? Как хранит?
Если же открыть тот же Cheat Engine, то можно заметить номера по типу 1AD829F и т. д. В интернете вычитал, что это смещение, т. е. некий "порядковый номер". Но что это такое само по себе? Вычитал что это 16ричная система счисления, но чего? Байтов? Но как эти байты хранятся? По типу:
(Первое значение) 0000001 байт
(Второе значение) 0000002 байт
(Миллионное значение (перевод из интернета)) 00F4240 байт
Или как?
А я ведь ещё слышал, что определённые данные могут храниться в нескольких байтах, это как? (Первое и второе значения) 00000010000002 байтов?

Всё это неизведанно и непонятно для меня...
Открой datasheet на 8-разрядный микроконтроллер - там организация памяти предельно проста, а объем её начинается с 64 байт у AtTiny13, например. Разберешься с ней - переходи уже к более серьезным устройствам, - 32-разрядные микроконтроллеры уже по сути небольшие компьютеры.
Лекции про структуру ОЗУ, кэш, кучу, страницы, адреса и прочее, да еще и применительно к играм, тебе тут никто написывать не будет
Николай Мадеев
Николай Мадеев
83 576
Лучший ответ
Макс Якимов Извиняюсь, но я в таких сложных штуках как "микроконтроллер" не разбираюсь (признаться честно, я впервые это слово слышу). Попробую поискать инструкцию, спасибо за ответ.
Про 16-ричную систему счисления ответ: это такая же система счисления как и все.
Нам привычна десятиричная система. Считаем до десяти так: 0123456789. Потом для продолжения счёта записываем старший разряд "1" слева, а справа снова перебираем 0123456789. В шеснадцатиричной системе ряд длиннее: 0123456789ABCDEF. То есть всего 16 позиций, потом - перенос. Можно придумать любую систему счислений, но конкретно двоичная и шеснадцатиричная удобна в программировании.
Про память.
Есть оперативка. В неё ложатся "числа". Про MMU и трансляцию адресов я умолчу...
Одно число может быть представлено разным количеством байт. Один байт кодирует 256 значений (то есть цифру от 0 до 255 включительно).
Два байта кодируют 256^2 значений = 65536.
Четыре байта кодируют 256^4 = 4 млрд значений. Программист обычно выбирает разрядность числа для его хранения. Если нужно хранить возраст человека - достаточно хранить 1 байт. Если число звёзд на небе - не менее 4 байт. Все эти числа, которые нужно хранить и обрабатывать - ложатся последовательно в памяти программы. Программа знает по какому адресу лежит нужное в определённый момент число, она его читает по этому адресу или пишет.

Похожие вопросы