Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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

Ответ
 
Опции темы
Старый 08.12.2017, 19:20   #1
Nikolay2015
Форумчанин
 
Регистрация: 23.08.2017
Сообщений: 59
Репутация: 24
По умолчанию Выделение памяти под приложение.

Здравствуйте, форумчане.
Начну с пояснения:
Загружаюсь на чистом железе. Со старта загружается MBR, потом bootmgr (самописный), т.к. использую загрузочную NTFS. Далее в bootmgr идёт поиск elf файла на диске, найдя файл Program.com типа elf надо загрузить код в память.
Вопрос как правильно всё организовать(код не прошу)?

У меня была идея:
Загрузить файл по адресу 0600h:0000h
Считать описатель файла.
В описателе найти с какого адреса начинается код, к примеру "CS:0100h"
И загрузить его по адресу 0800h:0000h
Также найти где данные(CS:0700h)и загрузить по адресу 0800h:0700h
Стэк задавать стандартный SS=0500h;IP=0000h
И затем передавать управление на 0800h:0000h.

Но тут проблема, как быть с программами которые будут к примеру 100КБ или в диапазоне адресов 0100h:0000h - 7000h:FF00h?

Можете подсказать в чём я ошибаюсь или как действовать примерно.

Спасибо.
Nikolay2015 вне форума   Ответить с цитированием
Старый 08.12.2017, 20:53   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,564
Репутация: 1743
По умолчанию

Сделать маленькую прогу, которая впишется в ограничения.
Эта прога в свою очередь загрузит и запустит все что нужно, хоть 100КБ, хоть 100МБ.
По сути, загрузчики современных ОС так и работают.
waleri вне форума   Ответить с цитированием
Старый 08.12.2017, 21:34   #3
Nikolay2015
Форумчанин
 
Регистрация: 23.08.2017
Сообщений: 59
Репутация: 24
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Сделать маленькую прогу, которая впишется в ограничения.
Эта прога в свою очередь загрузит и запустит все что нужно, хоть 100КБ, хоть 100МБ.
По сути, загрузчики современных ОС так и работают.
Допустим, но а как мне из проги 10КБ (т.к. реальный режим 1 МБ всего) загрузить к примеру прогу 100,200 и т.д. КБ , а потом вернуться обратно в программу 10КБ.

Использовать call? Или класть в стэк адрес куда возвращаться и с помощью jmp far прыгать на адрес в стэке?
Nikolay2015 вне форума   Ответить с цитированием
Старый 10.12.2017, 22:42   #4
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Адрес: Самара
Сообщений: 287
Репутация: 147
По умолчанию

Цитата:
Сообщение от Nikolay2015 Посмотреть сообщение
Использовать call? Или класть в стэк адрес куда возвращаться и с помощью jmp far прыгать на адрес в стэке?
А в чём разница? call - это push + jmp и есть.
Почему в 0600h:0000h? Там нолик не лишний после 60 ?
Стандартную программу ты не запустишь из boot-сектора, т.к. почти все проги используют DOS-функции (как минимум для выхода). Так что делай свою прогу, использующую только возможности BIOS и грузи её по фиксированному адресу и всё. Как загрузчик DOS грузит IO.SYS.
__________________
Делаю лабы на Asm/Delphi/Pascal: asmlabs.ru

Последний раз редактировалось 7in; 10.12.2017 в 22:45.
7in вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение памяти под матрицу yakimechik Общие вопросы C/C++ 1 22.01.2016 09:33
Выделение памяти под структуру. Си Vitany Помощь студентам 0 05.12.2012 17:50
выделение памяти под объект VIK_aka_TOR Общие вопросы Delphi 4 15.02.2012 19:20
Выделение памяти под массив указателей Анка291 Общие вопросы C/C++ 9 25.02.2011 01:03
выделение памяти под массив на C Kingdom_Reborn Помощь студентам 12 12.01.2011 05:40


19:17.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru