Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!elroy.jpl.nasa.gov!sdd.hp.com!think.com!mintaka!mintaka!weiss From: weiss@theory.lcs.mit.edu (Paul G. Weiss) Newsgroups: comp.os.msdos.programmer Subject: Microsoft Assembler Complaints Message-ID: Date: 19 Nov 90 22:49:30 GMT Sender: daemon@mintaka.lcs.mit.edu (Lucifer Maleficius) Distribution: comp Organization: MIT Lab for Computer Science Lines: 39 Here are two things that I don't like about the Microsoft Assembler. If someone from M-Soft is listening can you tell me if the latest version fixes these problems. First of all, the version that I am using is 5.10A. Problem #1: High level language support --------------------------------------- When using the .MODEL directive which provides high level language support, e.g. .MODEL SMALL,PASCAL all procedures are declared public. As far as I know there is no way to inform the assembler that you do not want certain procedures to be made public. This is a real problem if you are going to be distributing libraries, as it causes many symbols to be included in the library index that otherwise would be hidden. Problem #2: .CODE directive --------------------------------------- When you specify .MODEL MEDIUM or .MODEL LARGE you can then give the .CODE directive a name, e.g. .CODE FOO_TEXT This will translate into FOO_TEXT SEGMENT WORD PUBLIC 'CODE' Unfortunately, if your filename is BAR.ASM, then your object file will also contain a definition of the following segment: BAR_TEXT SEGMENT WORD PUBLIC 'CODE' Even if you do not place any data in this segment. Again, for those of us who distribute libraries this results in lots of null segments being placed in the library, making our libraries larger and confusing people who read link maps after linking with the library. Thanks for listening. -Paul Weiss