I was hoping to find on-line manuals that I could print and read on the john. So far no luck. But what I really need is how to declare variables in C.
For example, I have a sample code that has the statement:
unsigned char
and
unsigned long
What do these mean and do they limit the declaration to integers. What do i declare if I want a floating point?
Also, someone told me I cant do floating point with a Keil Compiler because of licensing issues (I got my copy from Silicon Labs and have just registered it). I will eventually need to do trig functions. What do i have to get (buy) to complete my project?
If the C bots could get rid of "unsigned character", when they mean "byte",
typedef unsigned char byte;
allow base 2 in the source,
There are some #define tricks to do something along those lines. Or write your own preprocessor.
and get rid of most of the darned braces I would be happy to meet 1/2 way.
#define { BLOCK_STARTS_HERE #define } BLOCK_ENDS_HERE
Then again, I don't think this is any better than using braces. ;)
And you can probably write C code without using any more braces than required for enclosing functions in, I think. However, this would probably result in some of the most mindbogglingly convoluted C code that was ever written (since it would require heavy use of gotos, omitting most control structures, etc).
Compound statements ("blocks") are a basic element of structured programming.
The size difference between assembler and C can also come from calling a C RTL that drags in large blocks of library code. This quickly offsets the quota between C and assembler for smaller programs.
Having a look at the list files should make it clear where the C program is burning those extra 3k.
First; Andy, thanks for the link to the nop info.
Also guys, I take your point about #defining, C does have enough higher level functionality to make it very usable. I think my overall point is, should a high level language mean you have to remember dozens of tokens and their weird variants? More pertinent, writing effectively for embedded 8bit hardware really does call for a lot of bit twiddling. It is so easy when you can see the binary on the page rather than converting to and from hex on a handy jotter. Less room for error too. I want compact runtime output but I can't see any need for especially compact source code, quite the reverse really. The closer I can get to natural English the better.
Sorry Lou, I'm being nostalgic. PLM was a family of languages designed by Intel for embedded work with their uCs and Ps. Based on IBM's PL/1 mainframe language and very popular in the 70's and 80's. The code output was phenomenally compact. I wrote 1000s of lines of assembler for the 80188 and 8051. When I started using PLM I was sceptical about efficiency but could rarely improve on the compiler with hand coding. Maybe I'm just a lousy assembly programmer and a grumpy old man.
Good to see a vigorous forum here anyway. I'll shut up now and get back to work.
en.wikipedia.org/.../M
Holy cow, Rob, you're an old relic :-)
I must admit I have never heard of PL/M before you mentioned it - I was not even born when it was conceived...
True, but many a fine tune played on an old fiddle. I was years away doing VHDL and just got back to the '51, using C this time round.
"Old engineers never die they just get noisy and attenuated"
PLM51 is quite nice. It adds structure similar to C, but limits the possible declarations a bit to make sure that you can't write processor-hostile constructs.
No more than two months since last I had to look at a PLM51 program - some products just refuses to die :)
I still have PLM51 and '86 compilers/linkers I have the compiler manuals but the linker manuals went south a long while ago. I would love to find copies of these again. Anyone?
Regards
I would love to find copies of these again.
Yes, I worked in PLM51 as well. And, I have all of the original Intel manuals (in the silly printed semi-half-page format). If you're ever in Dallas, look me up.
Jon
Hi, the www is just amazing. But hey, look after them, its mostly nostalgia working but I might just call by one day. Regards :-)