Subject: Re: [stella] Reflex: Source of PAIN! From: "B. Watson" <atari@xxxxxxxxxxxxxx> Date: Mon, 5 Apr 2004 14:35:20 -0400 (EDT) |
On Mon, 5 Apr 2004 KirkIsrael@xxxxxxxxxxxxx wrote: > Can anyone think of a good way of automagically (maybe macro based?) > finding instances of of using something that's "obviously" a Constant > as a variable, i.e. the ubiquitous newbie mistake of leaving out the > "#"? Well... not really. > > I can think of 2 or 3 ways, but I'm not sure what's automatable inside > of DASM or a text editor: > > * a pseudohungarian notation for constants would be easy to find in > an editor: do a text search for " CONST" -- that's an error, but > the use of CONST_ or whatever prefix is a bit inelegant. Just C_ maybe? This is probably the best of the 3 ideas.. could test for it with a perl script: #!/usr/bin/perl -w $a = $ARGV[0]; while(<>) { warn "$a:$.: Dubious use of constant: $_" if /\sC_/; } __END__ (actually, if you have perl installed & on your PATH, you can just save a copy of this email and run `perl -x email.txt filename.asm' to test the script.) The script spits out errors in the format: foo.asm:16: Dubious use of constant: lda C_BLAH ...which is standard enough that editors like vim and emacs can parse it and position the cursor at the right line (16, in the example) where the error/warning is. I dunno what editors in the Windows world might know how to parse this, but any good editor on any platform should be scriptable enough to implement it. If you're using a Makefile to build your bin, you could add a rule like: test: perl test.pl foo.asm ...and then make `test' a dependency for your `all' rule. > * Any argument that is all in caps should probably be proceeded by > a #, always. Is there a way of DASM macroing that? (and are there > exceptions to that rule, assuming non-cowboy programming?) Plenty of exceptions: The TIA/RIOT constants in vcs.h are always CAPS, and when you want to read a register (LDA INTIM, for example), you *don't* use a # in front. Also (if I get a vote) I vote for never forcing people to use a particular coding style (including capitalization schemes). Some people find ALL_UPPER or camelCase highly annoying (I do, even though I use the latter in Java every day). Yes, using the standard vcs.h `forces' everyone to capitalize the labels defined there, but that's part of vcs.h, not built into the assembler itself. Even the Java compiler will accept all-lowercase names. > * optionally, I could see some rule where a comment proceeds and follows > the "constants section", any reference defined in there without the > "#" is likely a problem. This would be easy to make a perl script for, > don't know if it's any easier for DASM. What would be nice would be to have DASM *not* allow the # where it doesn't make sense. Stuff like `byte #%10101010' is accepted, and shouldn't be. Having DASM be strict about this would help newbies understand what the # is actually for, IMO. Just my $0.02 worth... -- B. ---------------------------------------------------------------------------------------------- Archives (includes files) at http://www.biglist.com/lists/stella/archives/ Unsub & more at http://www.biglist.com/lists/stella/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [stella] Reflex: Source of PAIN, KirkIsrael | Thread | Re: [stella] Master Mind Deluxe - 1, Thomas Jentzsch |
Re: [stella] INV+ yet again - inv40, Thomas Jentzsch | Date | Aw: Re: [stella] Reflex: Source of , cybergoth |
Month |