Wyświetlenie rejestrów 64 bitowych bez systemu operacyjnego

0

Jak można wyświetlić wartości rejestrów 64-bitowych nie używając systemu operacyjnego? Jest to zadanie z przedmiotu systemy operacyjne.
W jaki sposób napisać ten program i w jakim języku? Assembler? i jak go odpalić bez systemu. Będę wdzięczny za wszelkie rady i wskazówki

0

Musisz napisać własny minisystem operacyjny. Szukaj pod hasłem OSDev.

0

udzielalem ostatnio odpowiedzi na podobne pytanie na innym forum. Tutaj masz link do tematu http://peb.pl/programowanie/1280466-obs-uga-pen-drive-bez-u.html
Wprawdzie temat jest nieco inny - obsluga pendrive bez systemu operacyjnego ale poczatkowe kroki beda takie same tzn. trzeba umiescic swoj program w master Boot Record i go wykonac. Tak oczywiscie wszystko w asembly akurat tego nie da sie zrobic w niczym innym.

1

Jest to zadanie z przedmiotu systemy operacyjne.
Niemożliwe, żebyś dostał zaawansowane zadanie bez jakiegokolwiek wprowadzenia w tematykę.

0

Dlaczego niemożliwe? To jest akurat zadanie na zaliczenie semestru więc może być trochę trudniejsze ale ogólnie zajmujemy się zupełnie czymś innym :/

0

W master boot record czyli na dysku twardym?
Ja raczej nie będę mógł tego zrobić na dysku bo to zadanie trzeba zaprezentować na zaliczenie więc pewnie muszę to zrobić na jakimś nośniku danych.
Niestety profesor nie sprecyzował :(
A jeśli chodzi o sam program w assemblerze to mógłbym liczyć na jakąś pomoc bo w tym temacie jestem zielony i nie wiem jak się za to zabrać

0

Zanim będziesz mógł wykonać jakikolwiek kod 64-bitowy to najpierw trzeba będzie go włączyć i nawet jeżeli połowę roboty wczytania twojego kodu odwali bootloader (np. GRUB) to reszta inicjalizacji wcale nie będzie aż tak trywialna.
Najprawdopodobniej źle zrozumiałeś zadanie. Tego typu projekt można zadać na zajęciach z tworzenia systemów operacyjnych i to po solidnym teoretycznym wprowadzeniu oraz jakiś sensownych laborkach i pracy najpierw z kodem 32-bitowym.

0

A masz napisane jakie to rejestry 64bitowe masz wczytać? Obejściem tego zadania jest wczytanie specjalnych rejestrów 64 bitowych instrukcja RDMSR bez przełączania się w long mode i skakania do 64 bitowego segmentu kodu co stanowi jakieś 90% trudności tego zadania. Oczywiście lepiej się najpierw spytać wykładowcy czy tak możesz zrobić...

0

Program ma wypisać wartości które aktualnie znajdują się w rejestrach 64 bitowych.
Czy źle zrozumiałem zadanie? Nie wiem. Dostałem jedynie polecenie "Wyświetlenie rejestrów 64 bitowych bez systemu operacyjnego" Nic więcej.
Sposób raczej jest dowolny bo na zajęciach robimy zupełnie co innego więc program po prostu ma działać więc ta instrukcja RDMSR może być skoro było by to ułatwienie.
W środę postaram się dowiedzieć więcej

0

I do tego czasu wstrzymałbym się z dalszymi zgadywankami.

0

"Wyświetlenie rejestrów 64 bitowych bez systemu operacyjnego"

Takie zdanie rownie dobrze mozna interpretować jak napisanie programu pod windows, który pobierze rejestry bez użycia funkcji windowsa (jak GetThreadContext). Tak wiec moze lepiej sie dowiedz dokladnie o co chodzi.

0

Ok jak się tylko czegoś więcej dowiem to napiszę. A póki co dzięki za zainteresowanie i pomoc

0

Dobra więc piszę wszystko czego udało mi piszę dowiedzieć.
Program ma być odpalany z dowolnego nośnika, może być napisany w dowolnym języku i ma się uruchomić bez użycia systemu operacyjnego. I w tym programie mam załadować wartości rejestrów 64 bitowych a potem je wyświetlić na ekranie

1

Trzeba zainicjalizować tryb chroniony (protected mode), a potem z niego przejść do long mode.
Pod tymi hasłami na pewno znajdziesz jakieś przykłady. Oficjalna dokumentacja też się przyda:
Intel: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
AMD: http://developer.amd.com/resources/documentation-articles/developer-guides-manuals/#manuals
Moim zdaniem dokumenty AMD są pisane łatwiejszym językiem.

1

do trybu chronionego dojedziesz tą drogą:
http://www.binboy.org/os/articles/125/Kurs_OS_czesc_1.html
Po polskiemu i jasno opisane

1
derlej napisał(a):

Dobra więc piszę wszystko czego udało mi piszę dowiedzieć.
Program ma być odpalany z dowolnego nośnika, może być napisany w dowolnym języku i ma się uruchomić bez użycia systemu operacyjnego. I w tym programie mam załadować wartości rejestrów 64 bitowych a potem je wyświetlić na ekranie

A dowiedziales sie jakie to rejestry maja byc?

1

Można trochę oszukać i użyć Gruba(2). Pozostanie tylko wejście w long mode (http://wiki.osdev.org/User:Stephanvanschaik/Setting_Up_Long_Mode).

2

...lub przejść bezpośrednio z real do long mode. Tutaj masz nawet gotowca: http://wiki.osdev.org/Entering_Long_Mode_Directly

0

Dzięki spróbuje coś wykombinować jak będzie z czymś problem to napisze

0x200x20 napisał(a):

A dowiedziales sie jakie to rejestry maja byc?

tzn? Chyba chodzi o ogólne rejestry procesora.

0

Nie chciałem o to prosić bo myślałem że samemu uda mi się poradzić z tym zadaniem ale niestety to wszystko okazało się zbyt skomplikowane.
Dlatego mam prośbę czy moglibyście mi napisać kod tego programu? Wystarczy sam kod w dowolnym języku już bez obsługi pendrive.

1

Ja w zasadzie się nie dziwię, że sobie z tym nie poradziłeś, bo problem trywialny nie jest. Aczkolwiek, dla kogoś, kto próbował kiedyś pisać swój system operacyjny wcale nie takie trudne, więc sądzę, że kilka osób będzie chętnych. Oczywiście, jeżeli zamieścisz odpowiedni temat w dziale "praca".

1 użytkowników online, w tym zalogowanych: 0, gości: 1