On Wed, 1 Mar 2006 15:42:50 +0100 Marcin Kościelnicki <markosc@xxxxxxxxxx> wrote: ~> i'm looking at a disassembly of grub's stage 1. and i wanna know why it ~> need's to CLI before setting up the environment?? ~ ~It's because it sets the stack address -- otherwise, interrupt could occur ~between mov to ss and mov to sp, which would use invalid stack address and be ~lethal. ahh! i see i see. it's for protection. ~ ~Also, it has NOTHING to do with lack of interrupt handlers -- BIOS has ~handlers for all interrupts needed for bootstrap, and the others are ~disabled. No bad thing can happen. In fact, it re-enables interrupts right ~after setting the stack (sti) ~ ~> i tried to interpret it ~> line by line and this is what i have so far ~> ~> 00007C4A FA cli ; disable interrupt ~> 00007C4B 80CA80 or dl,0x80 ; correct boot drive byte ~> 00007C4E EA537C0000 jmp 0x0:0x7c53 ; jmp to next inst ~> 00007C53 31C0 xor ax,ax ; zero ax ~> 00007C55 8ED8 mov ds,ax ; zero data segment ~> 00007C57 8ED0 mov ss,ax ; zero stack segment ~> 00007C59 BC0020 mov sp,0x2000 ; 8 kilobytes ~> 00007C5C FB sti ; enable interrupt ~> ~> also, since the origin is at 0000:7c00h i figured that must imply that "mov ~> sp, 0x2000" means that the stack starts at 0x7c00+0x2000 = 9c000 right? ~ ~No. ~ ~> 00007C57 8ED0 mov ss,ax ; zero stack segment ~> 00007C59 BC0020 mov sp,0x2000 ; 8 kilobytes ~ ~Here, ss==0 and sp==0x2000. Stack starts at ss*0x10+sp == 0x0*0x10+0x2000 == ~0x2000. Also, remember it grows down. one note. why must (ss*0x10)? ~ ~---------------------------------------------------------------------- ~Kliknij po wiecej! >>> http://link.interia.pl/f18ed ~ ~- ~: send the line "unsubscribe linux-assembly" in ~the body of a message to majordomo@xxxxxxxxxxxxxxx ~More majordomo info at http://vger.kernel.org/majordomo-info.html - : send the line "unsubscribe linux-assembly" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
- References:
- nasm -f bin / Elf format
- From: Thiago Silva
- grub thing
- From: Aleph One
- Re: grub thing
- From: Marcin Kościelnicki
- nasm -f bin / Elf format
- Prev by Date: Re: grub thing
- Next by Date: Re: grub thing
- Previous by thread: Re: grub thing
- Next by thread: Newbie at asmutils
- Index(es):