Keresés

Aktív témák

  • kisfurko

    senior tag

    válasz RedAnt #20 üzenetére

    ''Emiatt szerintem pmodeban is eleg lesz 1 privilegiumszint''
    Azért ajánlanám a két szintet, mert ha stack hiba van (ami igen gyakori), akkor triple fault miatt reset a vége, és ekkor nem tudod, hol a hiba. Úgy célszerű csinálni, hogy először legyen meg a megfelelő IDT az exception-ök lekezeléséhez. Ezt úgy érdemes csinálni, hogy mondjuk:

    exception1:
    push 1
    jmp exceptionhandler
    exception2:
    push 2
    ...

    exceptionhandler:
    kiírni a CS:EIP-t, a regisztereket, meg egyéb dolgokat, amik jólesnek...:))

    Az IDT-be meg szépen beírkálod a címeket.
    Meg tanulásnak sem rossz a több privilégiumszint. Mert ahhoz kell a TSS (ami a V86-hoz is kell).
    Különben protected mode-ba lépni gyerekjáték, de hogy interaktív programot csináljál... Persze könnyen írhatsz egy billentyűkezelő interruptot pufferrel, meg egy karakterkiíró rutint, ami 0b8000h-tól rakja be a karaktereket (ilyet is csináltam, hogy a debugger csak maga fusson, minden segédrutin nélkül, így BIOS-t is lehet vele lépésről lépésre futtatni). Én inkább csináltam V86-os futtatást, hogy simán használhassam a BIOS rutinokat (meg esetleg a DOS-t).

    A NASM pedig tényleg jó, én megszokásból használtam tasm-ot.
    Igazából assemblert is akartam írni, meg linkert, talán egyszer még előveszem a ''project''-et :) Csak mostanság a 3D grafikával foglalkozom.
    Szóval, ha kell segítség, akkor nyugodtan szólj!

    [Szerkesztve]

  • WN31RD

    addikt

    válasz RedAnt #1 üzenetére

    Hacsak nem valami nagyon speciális beágyazott rendszert akarsz csinálni, a legnagyobb problémád nem a védett mód, hanem az eszközvezérlők (driverek) megírása lesz.
    Vannak már egyébként egész jó operációs rendszerek, mielőtt egy ilyen projectbe fognál, gondold át, nem lenne-e megoldható a feladat valamelyik már létezővel, pl.: Linux, FreeBSD, NetBSD, OpenBSD, QNX, eCos, BeOS, stb., ezek csak amik hirtelen eszembe jutottak.
    Persze ha csak tanulgatni szeretnéd a védett módot/assembly programozást, az más. Ajánlom a korábban említettek mellé még a CWSDPMI nevő DPMI szerver + a DJGPP projectben levő programindító ''stub'' forráskódjának a tanulmányozását is, és esetleg a PMODE 3.07 is érdekes lehet.

    [Szerkesztve]

  • g4dg3t

    senior tag

    válasz RedAnt #1 üzenetére

    HeLLa!

    Halvanyak az emlekeim, de vmi meg remlik :)
    Igen a GDT-t meg belepes elott kell inicializalni, de elotte illik leellenorizni hogy legalabb 386-os procrol van-e szo, es hogy esetleg vedett modban vagyunk-e mar (OS fejlesztesnel utobbit nem szukseges...)! A szegmensregiszterek vedett modban a szelektorokat tartalmazzak, ezek pedig a deszkriptorokat mutatjak...es vegul a deszkriptor fogja meghatarozni a szegmenst!

    Udv Gadget.

  • blemidon

    tag

    válasz RedAnt #4 üzenetére

    Hi!

    Végre normális téma:)
    Anno az egyik legjobb védett módú fejlesztőeszköz a watcom c/c++ volt (ezzel készült az UFO, DOOM, és társai, a.k.a dos4gw) A jó hír, hogy manapság ez már ingyenes. [L]http://www.openwatcom.org[/L]
    A Sybase csinálta, csak mikor már nem nagyon kellett, abba akarták hagyni, de a SciTech, aki nagy watcom felhasználó volt, szólt nekik, hogy kéne belőle csináni ha mást nem, opensource valamit. Ez van most folyamatban.
    Emellett a watcom assembler a legnagyobb asm amit szerintem valaha PCre csináltak.
    Ezzel kellene megpróbálkoznod. Már régen nem foglalkoztam vele, de anno eléggé bentvoltam a témában, megpróbálok segíteni ha gondod van.

    Interruptokra visszattérve:
    Az int31 a ''global'' védett módú megszakítás, ennek az egyik funkciója hogy hív real módú megszakításokat. Tehát a sima int 21h nem megy, hanem úgy tdod megcsinálni, hogy int31nek megadod hogy a 21et akarod hívni ezekkel a paraméterekkel, és int31, és ő meghívja. pontosan nemtdom hogy melyik funkció, de így működik az biztos.


    [Szerkesztve]

  • Pizzafutar

    aktív tag

    válasz RedAnt #4 üzenetére

    Szerintem nem lehet használni az interruptokat.
    Annak 3 feltétele lenne:
    Létre kellene hozni az uj int. tablazatot, ez ebben a modban 8 byteos cimeket tartalmazna. A táblázat cimét be kell tolteni az IDT regiszterbe.
    Létezni-e kellen az uj bios rutinoknak
    Az int utasitas vedett modban kizarast eredményezhet.

    Egyébként emlékeim szerint, protected modba kapcsolas utan az oprendszerek sem hasznaljak már a BIOS-t.

    Az intel szintaktikához talan a fent emlitett
    INTeL 80386 Programmer's Reference
    # Manual, Mixing 16-bit and 32-bit code, page 16-6

    Vagy google lmsw


    [Szerkesztve]

  • Pizzafutar

    aktív tag

    válasz RedAnt #1 üzenetére

    Fogalmam sincs, de valaki mar probalkozott ezzel vagy 10 eve. :)
    Nezd meg a linux forraskodot.

Aktív témák