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

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

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

Ответ
 
Опции темы
Старый 28.09.2016, 05:41   #1
pompiduskus
юзер как все
Профессионал
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Адрес: земля
Сообщений: 1,567
Репутация: 629

icq: 446.452.423
По умолчанию не происходит вызов С функции из ассемблера, очень странная ситуация

В кратке,

Есть файт "kernel.c" и "kernel.h"

PHP код:
void kernel_main() {

    
char BUFF = (char*) 0xb8000;

    
int i=0int ii=0;

    while ( 
80*25) {
        
BUFFii++ ] = '#'BUFFii++ ] = 0x7i++;
    }

в "kernel.h" одна строка "extern void kernel_main();"

Запускаю всю эту кухню через qemu, is ISO файла.

qemu -cdrom ./os.iso

Еси запускать только ядро, то все в порядке.
Код:

    echo " Loading kernel"
    multiboot /boot/kernel.bin
    echo " Loading kernel: done" // эта строка выводится

Дело в том что GDB не засекает момент когда идет вызов kernel_main,

GRUB просто выводит строку что, он запустил ядро.

Я уже даже не знаю в какую строну смотреть, где искать. Удалил вообще все что было. Как видно по количестку строк.


PHP код:
bits    32

section 
.text
    align   4                       
align at 4 byte
    dd      0x1BADB002              
MAGIC
    dd      0x00
    dd      
- (0x1BADB002 0x00)

global 
start
extern kernel_main

start
:

    
cli                     Clear interrupt flag [IF = 0]; 0xFA
    mov esp
kernel_stack   set stack pointer
    
;push eax               multiboot structure
    
;push ebx               MAGIC
    call kernel_main        
controll to kernel_main(); in kernelc.
    hlt                     
HLT   Enter halt state 0xF4

end
:
    
cli
    hlt
    jmp end

section 
.bss
    resb 1024
*256           ; *Kb for stack

kernel_stack
:           ; <= stack_space 

Запускал в virtual-box, ситуация таже

Вообщем как я понял, не происходит "call kernel_main".

Но почему ? Как такое может быть.

Есть такой же kernel чуть-чуть измененны, в нем запускается.

Пробовал тупо копировать содержимое файлов, думал может просто не вижу чего.

А после того как GDB даже не увидел ничего
__________________
<Дзен - Вся вселенная в тебе > | <Рай - это всего лишь мечта терпящего страдания ада> | github.com/ch3ll0v3k

Последний раз редактировалось pompiduskus; 28.09.2016 в 05:45.
pompiduskus вне форума   Ответить с цитированием
Старый 28.09.2016, 09:56   #2
pompiduskus
юзер как все
Профессионал
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Адрес: земля
Сообщений: 1,567
Репутация: 629

icq: 446.452.423
По умолчанию

Вообщем магия, все работает.

Попытался переписать все что было на ассемблере под синтакс AT&T, но некоторые вещи так и не смог реализовать, ядро или падало, или мертвый цикл.

Попробовал еще раз кодов в стиле NASM и все, заупустилось.

Вроде как хорошо, но так как я даже и не понял что произошло, хрен его знает как будет дальше
__________________
<Дзен - Вся вселенная в тебе > | <Рай - это всего лишь мечта терпящего страдания ада> | github.com/ch3ll0v3k
pompiduskus вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странная ситуация с apache2 buffalord Администрирование серверов, VPS, хостингов 5 07.09.2016 16:07
Очень странная ошибка в PHP alhon PHP 7 22.10.2015 16:10
формулировка задачи очень странная i.yakushev Общие вопросы C/C++ 4 05.05.2011 10:12
C++ Функции...Немонятная ситуация Помогите плиз Myau Thai Помощь студентам 11 28.05.2009 00:08


04:07.


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

RusProfile.ru


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