[esigcode] keterangan : 0x0 manandai bootable ok kali ini akan kita bahas sekilas beberapa freebsd kernel init. kita mulai dari sini: ============ [c0474817: e8 ac 00 00 00 call c04748c8 <esigcode>] ============ kita lihat pada alamat memori kernel c0474817 ada pemanggilan fungsi esigcode, mari kita lihat fungsi esigcode: esigcode akan menentukan apakah akan menggunakan newboot atau olddiskboot ================== c04748c8 <esigcode>: c04748c8: 83 7d 04 00 cmpl $0x0,0x4(%ebp) c04748cc: 74 7d je c047494b <olddiskboot> c04748ce: 83 7d 18 00 cmpl $0x0,0x18(%ebp) c04748d2: 74 01 je c04748d5 <newboot> c04748d4: f4 hlt =================== pada alamat c04748c8 - cmpl $0x0,0x4(%ebp) - membandingkan nilai yang tersimpan pada [ebp + 4 hexa] dengan 0x0 jika match akan dijump ke alamat c047494b <olddiskboot> <olddiskboot> ========== c047494b <olddiskboot>: c047494b: 8b 45 08 mov 0x8(%ebp),%eax di sini nilai yang disimpan pada [ebp+8] akan disimpan di register eax c047494e: a3 e0 6c df 00 mov %eax,0xdf6ce0 selanjutnya nilai dari eax akan disimpan di alamat memori 0xdf6ce0 c0474953: 8b 45 0c mov 0xc(%ebp),%eax nilai yang disimpan pada [ebp+0xc] kemudian diisikan ke register eax c0474956: a3 80 1b e6 00 mov %eax,0xe61b80 selanjutnya nilai eax akan disimpan di alamat memori 0xe61b80 c047495b: c3 ret kembali lagi ke c04748ce ============= c04748ce: 83 7d 18 00 cmpl $0x0,0x18(%ebp) setelah operasi olddiskboot ebp+18 hexa apakah sudah 0x0 ?? c04748d2: 74 01 je c04748d5 <newboot> jika ya maka lakukan newboot. c04748d4: f4 hlt jika tidak maka kernel melakukan hlt yang merupakan instruksi untuk menghentikan aktivitas cpu.