Re: Segment override and lldt instruction
"A D" <[email protected]> Wed, 30 May 2007 21:21:00 -0400
| Newsgroups | org.kernel.vger.linux-assembly |
|---|---|
| Message-ID | <[email protected]> |
>Frank Kotler wrote: >>A D wrote: >>Hi! I have couple of questions regarding gnu assembly. I've heard the word >>segment override. Where segment register can be manually overriden. so how >>can i >>override say ds register? can segment register be overriden to my >>preferred >>memory address location? >> >>mov $0xf800, %ax >>mov %ax, %es >>mov %ds, %bx >> >>But I get segmentation fault error. How can i do it without error? > >Use a valid selector. You appear to have "heard about" some 16=bit real >mode stuff that is not true in protected mode. Take a look here: > >http://my.execpc.com/~geezer/johnfine/segments.htm > >In "Linux assembly", there is no reason you'd *want* to use a segment >override, or alter a segment register. > >> >>Also I was looking at the function of lldt instruction. The manual says >>that: >>"The source operand (a general-purpose register or a memory location) >>contains a segment selector that points to a local descriptor table >>(LDT)." >> >>How can one make segment selector point to ldt? > >"lldt ax" or "lldt [mem]" (16-bits)... I guess. But why? The limit is >0xffffffff and the base is 0. (Windows uses fs in a way that might be >"interesting"..._ > >If you're developing your own OS (using Linux), starting from a bootsector >- or GRUB - these instructions might be useful, but for "Linux assembly", >forget that segment registers exist! (and be glad! :) > >Best, >Frank > Thanks Frank. I was just curious how these things work. Thanks for your pointer. _________________________________________________________________ Windows Live Hotmail. Now with better security, storage and features. www.newhotmail.ca?icid=WLHMENCA149