Re: Writing small .COM executables
- From: NoSpam@xxxxxxxxxxx (Bob Masta)
- Date: Sun, 16 Mar 2008 14:13:35 GMT
On Sun, 16 Mar 2008 07:59:38 +0000, Alex Buell <spamtrap@xxxxxxxxxx>
wrote:
On Sat, 15 Mar 2008 22:02:10 GMT, I waved a wand and this message
magically appears in front of Frank Kotler:
I've just noticed that when I use buffers in my COM executables,
they take up space, leading to wasted space when stored. From what I
remember years ago that there were ways of reducing the footprint
the executables takes up on storage media by allocating from
elsewhere. How?
Well... assuming we're talking about "dos .com" and not Common Object
Module "COM" (thanks a pantload, Microsoft!), and assuming we're
talking about Nasm, put your uninitialized data in "section .bss",
and use "resb/w/d/q/t/o". Fasm uses "rb", etc. but I don't know how
to tell it "section .bss" - just put it at the end, I guess - that's
all Nasm does with it. (there are no "segments" in a .com file, it's
all just laid out flat - Nasm puts ".data" after ".text" and ".bss"
at the end - it doesn't really "exist", Nasm just defines labels
in .bss).
Ah, thanks I know what the error I've made - I did put all my
uninitialised data in the .bss section, but forgotten all about the
resb/d/q/t/o - I've been using db/w... Excellent, I'll save a lot of
space!
--
Just remember that unless you do something to move it, the stack is at
the top of your COM segment by default, and grows down toward that
area you are using for BSS data. If you have a large COM app (code
plus all data) and/or large stack needs due to recursion or whatever,
you should either move your stack or put some of your data in its own
segment above that. It can actually be a big help to move large data
buffers and arrays to their own segments, becuse then you can index
them starting at offset 0 in their segments. So the index becomes the
pointer without needing a table offset added into every access.
Best regards,
Bob Masta
DAQARTA v3.50
Data AcQuisition And Real-Time Analysis
www.daqarta.com
Scope, Spectrum, Spectrogram, FREE Signal Generator
Science with your sound card!
.
- Follow-Ups:
- Re: Writing small .COM executables
- From: Alex Buell
- Re: Writing small .COM executables
- References:
- Writing small .COM executables
- From: Alex Buell
- Re: Writing small .COM executables
- From: Frank Kotler
- Re: Writing small .COM executables
- From: Alex Buell
- Writing small .COM executables
- Prev by Date: Re: New Intel Silverstone Chip
- Next by Date: global start, global main or anything I want?
- Previous by thread: Re: Writing small .COM executables
- Next by thread: Re: Writing small .COM executables
- Index(es):
Relevant Pages
|