|
![]() |
Пред. тема | След. тема | ||
Форум Программирование под UNIX (C/C++) | |||
---|---|---|---|
Изначальное сообщение | [ Отслеживать ] |
"Стек и bootloader" | +/– | ![]() |
Сообщение от kuraga ![]() | ||
Я создал загрузчик (asm), который загружает ядро (Си) по адресу в памяти. Реальный режим. Проблема со стеком. Если параметры функции, вызываемой в ядре, передаются через регистры, все ок. Но если нет - через стек - например, переменное количество аргументов, все летит. Как инициализировать стек? Куда должны указывать регистры? Спасибо. | ||
Ответить | Правка | Cообщить модератору |
Оглавление |
|
Сообщения по теме | [Сортировка по времени | RSS] |
1. "Стек и bootloader" | +/– | ![]() |
Сообщение от guest ![]() | ||
> mov sp, 0x400 | ||
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору |
![]() | ||
2. "Стек и bootloader" | +/– | ![]() |
Сообщение от kuraga ![]() | ||
>> mov sp, 0x400 | ||
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору |
![]() | ||
3. "Стек и bootloader" | +/– | ![]() |
Сообщение от guest ![]() | ||
>[оверквотинг удален] | ||
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору |
![]() | ||
4. "Стек и bootloader" | +/– | ![]() |
Сообщение от guest ![]() | ||
Извините нечаянно квотинг отправил. | ||
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору |
![]() | ||
5. "Стек и bootloader" | +/– | ![]() |
Сообщение от kuraga ![]() | ||
>[оверквотинг удален] | ||
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору |
![]() | ||
6. "Стек и bootloader" | +/– | ![]() |
Сообщение от guest ![]() | ||
> "Нет." = "Спасибо. Попробовал, но не помогло." :-) Ставил 0xfffc, 0xf00 и | ||
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору |
![]() | ||
7. "Стек и bootloader" | +/– | ![]() |
Сообщение от kuraga ![]() | ||
Кажется нарыл. в двоичном файле ядра строка "Sasha%d" строго в конце файла, хотя OFFSET .LC0 по дизассемблеру есть 0. Разве по опции -Ttext оно не должно быть в начале??? | ||
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору |
![]() | ||
8. "Стек и bootloader" | +/– | ![]() |
Сообщение от kuraga ![]() | ||
Кажется нарыл. в двоичном файле ядра строка "Sasha%d" строго в конце файла, хотя OFFSET .LC0 по дизассемблеру есть 0. Разве по опции -Ttext оно не должно быть в начале??? | ||
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору |
10. "Стек и bootloader" | +/– | ![]() |
Сообщение от kuraga ![]() | ||
Я вот че понял: все правильно, он берет смещения переменных от начала какого-то сегмента... Какого? Я просто привык, что мы пишем ASSUME, а GCC такого не пишет... Или это на linux всегда так? Так вот: базирование .LC0 ведь идет по DS? А кто его устанавливает? Сейчас - я, причем абсолютно неправильно!!! А как GCC формирует сегменты? Один сегмент данных или как? Как получить его адрес, и почему он не записывается в DS? И где сегмент стека, какой из указанных опций я его отключил? | ||
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору |
![]() | ||
11. "Стек и bootloader" | +/– | ![]() |
Сообщение от ImPressed (ok) on 03-Янв-11, 16:36 | ||
> Я вот че понял: все правильно, он берет смещения переменных от начала | ||
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору |
![]() | ||
12. "Стек и bootloader" | +/– | ![]() |
Сообщение от kuraga ![]() | ||
> И еще вопрос, вы загружаете ELF-бинарник или plain (а-ля DOS *.COM файл)? | ||
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору |
![]() | ||
13. "Стек и bootloader" | +/– | ![]() |
Сообщение от ImPressed (ok) on 03-Янв-11, 16:49 | ||
>> И еще вопрос, вы загружаете ELF-бинарник или plain (а-ля DOS *.COM файл)? | ||
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору |
![]() | ||
14. "Стек и bootloader" | +/– | ![]() |
Сообщение от kuraga ![]() | ||
>[оверквотинг удален] | ||
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору |
![]() | ||
15. "Стек и bootloader" | +/– | ![]() |
Сообщение от ImPressed (ok) on 04-Янв-11, 12:24 | ||
>[оверквотинг удален] | ||
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору |
![]() | ||
16. "Стек и bootloader" | +/– | ![]() |
Сообщение от kuraga ![]() | ||
>[оверквотинг удален] | ||
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору |
![]() | ||
17. "Стек и bootloader" | +/– | ![]() |
Сообщение от ImPressed (ok) on 04-Янв-11, 14:00 | ||
>[оверквотинг удален] | ||
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору |
Архив | Удалить |
Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема |
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |