0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 24
|
|
1 | |
Переход на несколько байт12.01.2017, 11:47. Показов 1242. Ответов 5
Метки нет (Все метки)
Допустим нужно в программе сделать переход на 100 байт вперёд. НО, программа на жестком диске может быть разбита как угодно. Как она находит нужное продолжение кода? Подскажите раздел где можно об этом почитать, извините, если написал не в тот раздел.
Добавлено через 2 часа 25 минут Программа фрагментирована на жестком диске, как windows находит адреса продолжения программы?
0
|
12.01.2017, 11:47 | |
Ответы с готовыми решениями:
5
Переход по адресу из массива байт Прочитать несколько байт с сокета Arduino UNO. Прочитать несколько байт Несколько лишних байт при выводе |
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
|
|
12.01.2017, 11:48 | 2 |
Программы не исполняются с жёсткого диска, а перед запуском ОС загружает программу в ОЗУ, собирая в правильном порядке. Если же вы пишете начальный загрузчик, то должны самостоятельно позаботиться о подобии "драйвера" файловой системы.
1
|
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 24
|
|
12.01.2017, 20:19 [ТС] | 3 |
Windows собирает программу со всго жесткого диска? А если программа не помещается целиком в оперативку? Или тогда подключается жесткий в качестве ОЗУ и программа ТОЛЬКО ЦЕЛИКОМ помещенная в ОЗУ запускается?
0
|
636 / 391 / 75
Регистрация: 21.09.2008
Сообщений: 1,343
|
|
13.01.2017, 12:16 | 4 |
Во времена DOS обходились созданием оверлейных (overlay) exe. В эпоху protected mode при нехватке физического ОЗУ обходятся swap-файлом на HDD/SSD.
0
|
Asm/C++/Delphi/Py/PHP/VBA
|
||||||
13.01.2017, 12:52 | 5 | |||||
Сообщение было отмечено sergeiparshin как решение
Решение
Программы в формате EXE (DOS MZ или Win PE/NE) имеют заголовок, в котором хранится информация о размере программы, о кол-ве требуемой памяти и т.д. Если она "не помещается в оперативку", то при её запуске система выводит сообщение об ошибке. Есть EXE-файлы, которые помимо программного кода хранят данные (например, самораспаковывающиеся архивы - SFX). Система загружает код программы в оперативку (при этом данные за кодом не загружаются, в заголовке же написано сколько она занимает) и запускает. Далее программа считывает данные из файла (себя самой). По сути, это то же самое, как если бы этот архив был в отдельном файле, просто в том же файле удобнее (не потеряется). Под DOS, как уже сказано, были оверлеи - это когда часть кода хранится в отдельном файле и подгружается при необходимости.
По поводу перехода на 100 байт вперёд и пр. проблем нет. Во-первых, прога загружается всегда по одному и тому же линейному адресу, указанному в заголовке (Windows) либо по одному и тому же смещению (DOS, меняется лишь сегмент, но для настройки в том же EXE-шнике есть специальная таблица, использую которую происходит настройка... собственно, в прогах под Windows есть тоже свои таблицы). Ну и во-вторых, если загрузить код, содержащий инструкции перехода/вызова (jmp, call и т.п.), то там используется не прямая, а относительная адресация (как правило, хотя можно сделать и переход по адресу, содержащемуся в регистре или памяти). Т.е. в примере ниже вне зависимости от адреса метки from переход всегда будет осуществляться к метке to, т.к. инструкция jmp хранит в себе информацию о переходе на 1 байт вперёд (относительно следующей инструкции):
1
|
3408 / 1827 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
13.01.2017, 16:11 | 6 |
Сообщение было отмечено sergeiparshin как решение
Решение
Читайте:
1)Работа процессора, внимание нужно обратить на взаимодействие с кешем. 2)Операционные системы, внимание нужно обращать на жизненный цикл процеса. Если в общих словах, то: Существует несколько кешей- назовем их быстрый(10Мб) и медленный(100Мб). Сам процессор работает с быстрым кешем. Если нужных данных(данные или код) нет в бысторм кеше, они подгружаются с медленного, если их нет в медленном, то с оперативной памяти, если их нет в ОЗУ, то с файла подкачки. Как-то так. размеры памяти указаны условно
1
|
13.01.2017, 16:11 | |
13.01.2017, 16:11 | |
Помогаю со студенческими работами здесь
6
Как сдвинуть указатель на несколько байт? Как прочитать несколько байт из файла с n-го бита Как прочитать несколько байтов в файле с n-го байта по m-й байт ? База данных: переход на несколько форм Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|
Что такое NullReferenceException и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
|
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
|
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
|
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
|
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
|
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее:
На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
|
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript
В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
|
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
|
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|