Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Assembly x86 > Re: Writing sma...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 5 of 8 Topic 4573 of 4728
Post > Topic >>

Re: Writing small .COM executables

by NoSpam@[EMAIL PROTECTED] (Bob Masta) Mar 16, 2008 at 02:13 PM

On Sun, 16 Mar 2008 07:59:38 +0000, Alex Buell  <spamtrap@[EMAIL PROTECTED]
>
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!
 




 8 Posts in Topic:
Writing small .COM executables
Alex Buell <spamtrap@  2008-03-15 14:03:24 
Re: Writing small .COM executables
Frank Kotler <spamtra  2008-03-15 22:02:10 
Re: Writing small .COM executables
Terence <spamtrap@[EM  2008-03-15 19:21:06 
Re: Writing small .COM executables
Alex Buell <spamtrap@  2008-03-16 07:59:38 
Re: Writing small .COM executables
NoSpam@[EMAIL PROTECTED]   2008-03-16 14:13:35 
Re: Writing small .COM executables
Alex Buell <spamtrap@  2008-03-16 23:18:41 
Re: Writing small .COM executables
NoSpam@[EMAIL PROTECTED]   2008-03-17 13:19:50 
Re: [Clax86list] Writing small .COM executables
Charles Crayne <spamt  2008-03-16 20:53:30 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Thu Jul 24 0:25:14 CDT 2008.