Avatar billede karas Nybegynder
02. september 2006 - 17:15 Der er 2 kommentarer

Hvad er Current Protection Level (CPL)?

Er der nogen af jer kloge hoveder som kan fortælle mig om der er en metode til at bestemme hvilken "Protection Level" noget software kører i. Dvs. softwaren skal selv kunne gøre det. x86 arkitekturen har ring 0, 1, 2 og 3. Det er disse tal jeg skal bruge.

Kender i en assembly instruction som kunne returnere det?
Avatar billede karas Nybegynder
02. september 2006 - 17:50 #1
Hmm, jeg fandt ud af det selv:

unsigned int GetCPL()
{
    //    Taken from Chapter 4.2 in IA-32 Intel Architecture Software Deleloper's Manual Volume 3A - System Programming Guide, Part 1
    //
    //    Current privilege level (CPL) field — (Bits 0 and 1 of the CS segment register.) Indicates
    //    the privilege level of the currently executing program or procedure. The term current
    //    privilege level (CPL) refers to the setting of this field.
    //
    unsigned int cpl;
    __asm
    {
        mov ax, cs
        and eax, 0x00000003
        mov cpl, eax
    }

    return cpl;
}
Avatar billede nlf Nybegynder
03. september 2006 - 16:20 #2
unsigned int GetCPL()
{
    __asm
    {
        mov ax, cs
        and eax, 0x00000003
    }
}

cdecl returnerer jo alligevel resultatet i eax ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester