Hello all,

I have recently taken an academic interest in the freedos project. My
current goal is to understand how the kernel was implemented.

While reading the kernel.asm file located
in freedos-svn/kernel/branches/jhall/kernel I have inferred that the
routine "kernel_start" is calculating the overall memory available to the
system. but I came across a snippet of code that confused me. Starting on
line 128
it goes

mov dx,init_end+15
mov cl,4
shr dx,cl
sub ax,dx

why is 15 added to the end of the address of the symbol init_end if you
just shift the value right by 4, doesn't that just undo the addition? Is it
related to memory addresses having to be divisible by 16? Segmentation or
something like that?

Also is that last sub calculating the amount of room needed for the kernel?

I hope all is well and get back to me when it is convenient for you, thanks
-- 
*Quinton Cook*
_______________________________________________
Freedos-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to