Messages in this thread | | | Date | Mon, 13 Jan 2003 17:15:33 -0800 (PST) | From | Mad Hatter <> | Subject | Re: bootsect.S: 2 questions |
| |
Thanks for the pointers to Ralf Brown's interrupt page.
--- "Richard B. Johnson" <root@chaos.analogic.com> wrote:
>FYI, the startup functions are used once-per-boot. Any "improvements" >other than those necessary to "fix" something are useless in the >overall scheme of things.
Sure. I'm a novice at both the x86 instruction set and the GNU assembler and I'm just trying to understand the reason the code is written the way it is.
--- "Randy.Dunlap" <rddunlap@osdl.org> wrote: > If you change those to bytes to save 3 bytes of space, and then you > change all of the instructions that load or store those values to 16-bit > registers, do you have a net saving of space? > Or you load/store them to 8-bit registers and rewrite the code, what > happens?
I looked at one place where these words are used: the read_track routine. Part of that code looks like this: ------------------------------- movw 4(%si), %dx # 4(%si) = track movw (%si), %cx # (%si) = sread incw %cx movb %dl, %ch movw 2(%si), %dx # 2(%si) = head movb %dl, %dh andw $0x0100, %dx movb $2, %ah ---------------------------------
If this code is rewritten to use byte instructions (and sread, head, track are changed to .byte instead of .word) like so (the last two instructions are unchanged): ----------------------------------------------- movb (%si), %cl # (%si) = sread incb %cl movb 2(%si), %ch # 2(%si) = track movb 1(%si), %dh # 1(%si) = head andw $0x0100, %dx movb $2, %ah ------------------------------------------------
there is a net saving of 6 bytes. (I compiled this with "gcc -c", linked with "ld --oformat binary -Ttext 0x0" and compared the size of the results).
I'm not proposing this as a fix BTW; just an academic exercise, really.
__________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |