Selamat datang,
Pengunjung
. Silahkan
masuk
atau
mendaftar
. Apakah anda lupa
aktivasi email
?
1 Jam
1 Hari
1 Minggu
1 Bulan
Selamanya
Berita:
ForSa punya logo baru!!
Ada komen?
Home
Forum
Anggota
Lihat daftar anggota
Mencari anggota
Masuk
Registrasi
Forum Sains Indonesia
»
Forum
»
Ilmu Terapan
»
Ilmu Komputer
(Moderator:
insan sains
) »
Mode 32-bit
User
Selamat datang,
Pengunjung
. Silahkan
masuk
atau
mendaftar
. Apakah anda lupa
aktivasi email
?
Mei 24, 2012, 10:35:10 AM
1 Jam
1 Hari
1 Minggu
1 Bulan
Selamanya
Masuk dengan nama pengguna, kata sandi dan lama sesi
Artikel Sains
Biologi
Astronomi
Fisika
Kesehatan
Kimia
Matematika
Sains Umum
Teknologi
Diskusi Sains
Aku Cinta ForSa
Pranala Luar
Download Freeware
ShoutBox!
Last 10 Shouts:
haman11
Hari Ini
jam 08:11:34 AM
ada yg tauproses daur ulang urin pada cicak gk ?
GhostInMachine
Kemarin
jam 03:52:17 PM
kk mau tanya cara upload Tulisan dong??
army.fice
Kemarin
jam 12:22:47 AM
sepi banget sih
lustforscience
Mei 22, 2012, 08:26:02 PM
amin
exile_rstd
Mei 22, 2012, 08:24:55 PM
offline....
good night all
exile_rstd
Mei 22, 2012, 08:23:08 PM
iyaaaa jumat saya mau ujian kenaikan kelas. doain ya om Farabi, semoga ujiannya lancar dan dpt nilai memuaskan
Farabi
Mei 22, 2012, 08:20:37 PM
KMana aja non? Sibuk belajar?
exile_rstd
Mei 22, 2012, 07:44:23 PM
argh lama ga buka forsa, comment di beberapa thread jd membingungkan saya. apa karena udh lama ga asah ya...
N E R R O
Mei 20, 2012, 07:41:57 PM
udah lama gak mampi ke forsa, sdh banyak berubah
bangnono_swedye
Mei 20, 2012, 05:23:03 PM
pertanyaa2 ane di forum kesehatan cuma2 diliaat2in aj, kagak ada yang komen ato ngasih jawaban
kebiasaan di forsa kah..??
Show 50 latest
« sebelumnya
berikutnya »
Kirim topik ini
Cetak
Halaman: [
1
]
Turun
Penulis
Topik: Mode 32-bit (Dibaca 614 kali)
0 Anggota dan 1 Pengunjung sedang melihat topik ini.
Farabi
Profesor
Tulisan: 2584
IQ: 167
Gender:
Self-Proclaim Judge. All hail safirot.
Mode 32-bit
«
pada:
Oktober 19, 2011, 08:10:13 PM »
Publish
Protected Mode adalah nama lain dari mode 32-bit. Pada awal perkembangannya mode ini tidak langsung menggunakan pengalamatan linier 32 bit, melainkan murni menggunakan alamat 16-bit saja. Sedangkan pada komputer modern, sistem pengalamatan yang sekilas terlihat seperti 32-bit, sebetulnya bukan 32-bit melainkan 20-bit saja.
Saat anda melihat alamat ssss:aaaa maka alamat tersebut berarti alamata ssss harus dikalikan dengan x10(16) baru ditambahkan dengan aaaa. Dimana S biasa disebut sebagai segmen dan a biasa disebut sebagai address. Jenis pengalamatan ini oleh para programer biasa disebut sebagai real mode, mengacu kepada istilah jenis data bilangan real yang dulunya hanya sepanjang 16-bit biarpun sekarang didefinisikan ulang menjadi sepanjang yang lain menurut penulis "compiler" masing masing. Compilera adalah pengumpun dan penerjemah perintah perintah prosesor dari kata menjadi angka. Istilah untuk penamaan dari angka menjadi sandi kata disebut mnemonic. Semisal, perintah untuk memindahkan memori dari alamat yang ditunjuk oleh register eax ke eax adalah x8BC0, anda pasti akan kesulitan untuk menghapalkan ini, mending kalau ini standard bagi setiap prosesor, nyatanya, terkadang angka yang sama bisa menjadi perintah yang berbeda, bahkan saat perpindahan dari mode 16-bit ke 32-bit, angka angka yang ada harus didefinisikan ulang bahkan sekarang orang orang dari Intel Corp kehabisan angka untuk membuat instruksi baru, karena mereka menginginkan program program lawas tetap jalan di mesin mereka. Jadi untuk mempermudah pemrograman komputer makan dibuatlah sebuah kata yang biasa disebut sebagai mnemonic, dimana mnemonic ini kemudian diterjemahkan ditafsirkan oleh compiler dan dirubah menjadi angka yang dimengerti oleh prosesor.
Oleh pihak MS dan Intel, biasanya pengguna dibagi menjadi 3 bagian, bagian paling dalam yaitu ring 0 adalah untuk kernel atau device driver, dan mode ke 3 atau ring 2 adalah untuk user level atau programer programer yang biasa membuat program untuk komputer. Pada jaman Windows 98, hal ini tidak ada, yang mengakibatkan seringnya OS crash karena banyaknya program program yang secara serampangan mengambil alih sistem utama. Pada sistem NT dan seterusnya, pengguna komputer kemudian disekat sekat menjadi beberapa bagian, bahkan memori yang boleh digunakan pun bagi sebagian program dibatasi supaya tidak mengganggu sistem utama. Dan itulah sebabnya mode 32-bit ini kemudian disebut sebagai Protected Mode.
Saat pertama kali komputer dinyalakan, sebetulnya dia berada dalam keadaan 16-bit mode, dengan sistem pengalamatan 20-bit. Di mode ini pengguna atau programmer, karena pengguna non programer biasa disebut end user, bisa menggunakan fungsi fungsi dasar yang telah ditulis oleh pihak pembuat komputer didalam BIOS yang disebut sebagai interupt. Anda tidak perlu kuatir dengan driver bagi perangkat keras anda karena INT ini pasti bisa melakukan apa saja karena memang dia telah distandardkan oleh penulis BIOS. Jika sistem anda tidak bisa melakukan hal ini bisa jadi itu dikarenakan adanya bug pada sistem BIOS anda atau sistem anda adalah "propietary system" alias sistem tertutup dengan royalti semisal Playstation. Biasanya perangkat keras ini cara kerja dan interfacenya sangat rahasia dan tidak akan diberikan secara gratis.
Akan tetapi lain halnya dengan sistem Intel, biasanya mereka telah memberikan sebuah fungsi dasar bagi komputer, sehingga walaupun komputer anda tidak mempunyai OS, anda bisa menulis sebuah OS kecil untuk kegiatan anda sehari hari. Demikian sejarah tentang komputer dan alasan adanya sistem 32-bit ini.
Pada sistem 32-bit, hukum yang berlaku adalah FBR, alias "First Booted Ruled". Siapa yang pertama kali dibaca oleh prosesor dan dijalankan, maka dia adalah penguasa. Sewaktu saya masih SMA banyak program program virus yang seringkali di boot pertama kali oleh OS karena menempati sektor yang biasa dibaca oleh prosesor pertama kali dan dianggap sebagai Sistem Operasi.
Sistem pengalamatan pada P Mode ini memiliki semacam sekat sekat yang bisa anda definisikan, sekat sekat ini biasa disebut sebagai Global Descriptor Table. GDT ini adalah tabel yang ada didalam sistem internal prosesor yang berguna untuk mengetahui jenis akses yang boleh diberikan kepada program program setelah program "penguasa" kepada program program berikutnya, dari alamat di memory, sebanyak apa yang boleh diakses, di ring berapa dia berada, dan dimode apa dia berada, 16-bit atau 32-bit. Sebelum masuk ke P Mode ini anda harus membuat sebuah table GDT ini sebelum bisa masuk ke PMode atau sistem anda akan mereset komputer dengan sendirinya karena salah akses memory.
Sebelum masuk ke PMode anda harus memembuat GDT, mengaktifkan Control Register, meload GDT, mengaktifkan saluran Bus x20 sebelum kemudian membanjiri prosesor dengan perintah bahwa anda telah siap masuk ke mode P dengan melakukan lompatan dengan segmen dari GDT yang anda inginkan.
Setiap tabel biasanya terdiri dari 8 byte. Peta byte tabel ini didefinisikan sebagai berikut
GDTAddr struct
_size dw 0
address dd 0
reserved dw 0
GDTAddr ends
Struktur ini mempunyai arti, GDTAddr sebagai nama untuk memudahkan pengingatan, bisa diganti dengan nama lain, size, dari namanya anda bisa tahu ini untuk menunjukan ukuran dari GDT, panjangnya hanya 16-bit, jadi tabel ini hanya boleh maksimum menampung sebanyak 8192 tabel saja. Sedangkan address dari nama anda bisa tahu bahwa itu untuk menunjukkan alamat dimana Tabel disimpan, sedangkan reserved berarti cadangan, dalam artian bagian ini tidak terpakai dan hanya sebagai cadangan saja.
Dan yang kedua adalah peta byte dari tabel GDT yang tidak lain adalah isi dari GDT, karena struktur diatas hanyalah struktur untuk pemberitahuan alamat dan ukuran saja.
GDTEntry struct
limit_low dw 0
base_low dw 0
base_middle db 0
access db 0
granularity db 0
base_high db 0
GDTEntry ends
limit_low adalah batas dari alamat paling bawah berapa banyak akses memori yang boleh anda akses oleh "Penguasa" pertama. 1 nilai disini berarti sepanjang 64 kbytes
«
Edit Terakhir: Oktober 19, 2011, 08:11:53 PM oleh Farabi
»
Tercatat
Informasi yang aku anggap menarik
http://farabinewsnow.blogspot.com/
Saya Indonesia ASLI.
Farabi
Profesor
Tulisan: 2584
IQ: 167
Gender:
Self-Proclaim Judge. All hail safirot.
Re: Mode 32-bit
«
Jawab #1 pada:
Oktober 19, 2011, 08:10:49 PM »
Publish
Byte access mempunyai peta bit seperti berikut ini:
P
Is segment present? (1 = Yes)
DPL
Descriptor privilege level - Ring 0 - 3.
DT
Descriptor type
Type
Segment type - code segment / data segment.
Byte granularity mempunyai peta bit seperti berikut ini:
G
Granularity (0 = 1 byte, 1 = 1kbyte)
D
Operand size (0 = 16bit, 1 = 32bit)
0
Should always be zero.
A
Available for system use (always zero).
Pada umumnya untuk memudahkan, para programmer sering menganggap struktur "GDTAddr" sebagai GDT Entry yang pertama, sehingga Tabel 0 sering kali tidak terpakai, tabel ini biasa disebut sebagai "segment selector" sebagai warisan dari penamaan di mode 16-bit. Setelah semua hal tesebut dilakukan langkah berikutnya adalah anda harus mengaktifkan Gate Bus x20 (atau lazim disebut a20) yang membuat memory pada komputer anda bisa diakses. Untuk pengaktifan a20 ini bisa anda lakukan melalui port x64 dengan membaca keadaan gate tersebut di port x92. Akan tetapi beberapa mesin mewajibkan anda untuk mengaktifkan hal tersebut melalui INT pada BIOS, biasanya menggunakan INT x21 dengan register AX bernilai x2401. Setelah a20 berhasil dinyalakan, anda harus mengubah Nilai di Control Register supaya bit mode 32-bit menyala. Berikut ini adalah peta bit dari Control Register yang biasa disebut CR0
31 PG Paging If 1, enable paging and use the CR3 register, else disable paging
30 CD Cache disable Globally enables/disable the memory cache
29 NW Not-write through Globally enables/disable write-back caching
18 AM Alignment mask Alignment check enabled if AM set, AC flag (in EFLAGS register) set, and privilege level is 3
16 WP Write protect Determines whether the CPU can write to pages marked read-only
5 NE Numeric error Enable internal x87 floating point error reporting when set, else enables PC style x87 error detection
4 ET Extension type On the 386, it allowed to specify whether the external math coprocessor was an 80287 or 80387
3 TS Task switched Allows saving x87 task context only after x87 instruction used after task switch
2 EM Emulation If set, no x87 floating point unit present, if clear, x87 FPU present
1 MP Monitor co-processor Controls interaction of WAIT/FWAIT instructions with TS flag in CR0
0 PE Protected Mode Enable If 1, system is in protected mode, else system is in real mode
Setelah CR0 di bit 0 bernilai 1 maka anda sudah bisa masuk ke protected mode dengan menghitung nilai linier alamat anda melompat, dengan Tabel GDT yang anda inginkan. Tentu saja saya sarankan anda menggunakan tabel linier dengan akses penuh bagi anda.
Tambahan, kode campuran dari untuk menyetel GDT dan melompat ke mode 32-bit.
void init_descriptor_tables()
{
// Initialise the global descriptor table.
init_gdt();
}
static void init_gdt()
{
gdt_ptr.limit = (sizeof(gdt_entry_t) * 5) - 1;
gdt_ptr.base = (u32int)&gdt_entries;
gdt_set_gate(0, 0, 0, 0, 0); // Null segment
gdt_set_gate(1, 0, 0xFFFFFFFF, 0x9A, 0xCF); // Code segment
gdt_set_gate(2, 0, 0xFFFFFFFF, 0x92, 0xCF); // Data segment
gdt_set_gate(3, 0, 0xFFFFFFFF, 0xFA, 0xCF); // User mode code segment
gdt_set_gate(4, 0, 0xFFFFFFFF, 0xF2, 0xCF); // User mode data segment
gdt_flush((u32int)&gdt_ptr);
}
// Set the value of one GDT entry.
static void gdt_set_gate(s32int num, u32int base, u32int limit, u8int access, u8int gran)
{
gdt_entries[num].base_low = (base & 0xFFFF);
gdt_entries[num].base_middle = (base >> 16) & 0xFF;
gdt_entries[num].base_high = (base >> 24) & 0xFF;
gdt_entries[num].limit_low = (limit & 0xFFFF);
gdt_entries[num].granularity = (limit >> 16) & 0x0F;
gdt_entries[num].granularity |= gran & 0xF0;
gdt_entries[num].access = access;
}
gdt_flush:
mov eax, [esp+4] ; Get the pointer to the GDT, passed as a parameter.
lgdt [eax] ; Load the new GDT pointer
mov ax, 0x10 ; 0x10 is the offset in the GDT to our data segment
mov ds, ax ; Load all data segment selectors
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
jmp 0x08:.flush ; 0x08 is the offset to our code segment: Far jump!
.flush:
ret
Tercatat
Kirim topik ini
Cetak
Halaman: [
1
]
Naik
« sebelumnya
berikutnya »
Forum Sains Indonesia
»
Forum
»
Ilmu Terapan
»
Ilmu Komputer
(Moderator:
insan sains
) »
Mode 32-bit
Copyright © 2006-2011
Forum Sains Indonesia