Xref: news2.mv.net comp.os.msdos.djgpp:7233 From: brucef AT central DOT co DOT nz (Bruce Foley) Newsgroups: comp.os.msdos.djgpp Subject: Macros within "as" assembler Date: Wed, 14 Aug 1996 07:11:15 GMT Organization: Internet Company of New Zealand Lines: 53 Message-ID: <4us181$kg2@status.gen.nz> NNTP-Posting-Host: brucef.central.co.nz To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Hi. can someone tell me how I would implement the following TASM/MASM style macro for "as"? CONST_TO_INDEXED_REG macro ADDRESS, INDEX,, VALUE mov dx, ADDRESS mov ax, (VALUE shl 8) + INDEX out dx, ax endm (The above code is an abrieveated snippet from Zen of Graphics) I feel the above macro raises some interesting issues. Obviously, T/MASM perform the (VALUE shl 8) + INDEX at assembly time, based on the fact that ADDRESS, INDEX, & VALUE are simply aliases for constant values. I realise that "as" was primarily designed to accept input generated from gcc, rather than being a feature-packed assembler. Therefore, I don't realisticly expect "as" to be able to do this sort of substitution. I am not really that concerned about small issues like the one just mentioned. However, I was unable to implement an equivalent macro. Below is how I thought you should do a macro for "as": #define MY_MACRO(MY_ARGUMENT) movl MY_ARGUMENT, %eax ..... MY_MACRO($0xFFFFFFFF) Thes causes an "undefined reference to MY_ARGUMENT" error at link time. Can anyone help? I'm sure I must be missing an obvious point somewhere along the way. Please note that I am forcing the invokation of the preprocessor by using a capital S on the assembler module when compiling (a mistake I made when starting out) so that is not the problem. Also, (dumb question time) what is it that actually TERMINATES a macro declaration? obviously, for T/MASM, it is the "endm" statement, but what about for the #define above? And last but not least, what should I be calling "as" during a discussion such as this? I've seen some people call it Gas (like the day after a night eating curry), is this the correct terminology? (After all, "as" is a word, and therefore a little bit ambiguous :) Thanx, Bruce.