You can write Fortran in any language? So what'syour point?
--John
On Friday 11 July 2003 13:04 pm, nobodyo@nobo... wrote:
> Hi,
>
> under http://www.ioccc.org/years.html you can find good examples of C-Code
> which can't be understood without the explanation.
>
> One example:
>
> #include <stdio.h>
> int l;int main(int o,char **O,
> int I){char c,*D=O[1];if(o>0){
> for(l=0;D[l ];D[l
> ++]-){D [l++]-0;D[l]-> 110;while (!main(0,O,l))D[l]
> += 20; putchar((D[l]+1032)
> /20 ) ;}putchar(10);}else{
> c=o+ (D[I]+82)%10-(I>l/2)*
> (D[I-l+I]+72)/10-9;D[I]+=I<0?0
>
> :!(o=main(c/10,O,I-1))*((c+999
>
> )%10-(D[I]+92)%10);}return o;}
>
> This program runs normally on any ANSI C compiler and is ASCII dependent.
> The source code is nice, compact, and self documenting
> as all good programs should be! :-)
>
> Regards
>
> Rolf F.
>
>
>
>
>
>
>
>
>
>
>
>
> .
>
>
>
>
Assembler Vs C-Compiler
Started by ●July 10, 2003
Reply by ●July 11, 20032003-07-11
Reply by ●July 11, 20032003-07-11
<nobodyo@nobo...> wrote:
> under http://www.ioccc.org/years.html you can find
good examples of
> C-Code which can't be understood without the explanation.
>
> One example:
>
> #include <stdio.h>
> int l;int main(int o,char **O,
> int I){char c,*D=O[1];if(o>0){
That's useless for this discussion. Nobody writes code like this,
and of course it's also possible to construct a similar example in
assembler.
Reply by ●July 11, 20032003-07-11
On Fri, 11 Jul 2003 07:23:58 -0000, andrew wrote:
>--- In msp430@msp4..., onestone
<onestone@b...> wrote:
>> Sorry if I confused Andrew, and believe me I'm not having a dig at
>> Salvo. My point is simple, you used Salvo as an example of C vs
>> assembler, but it is a different entity.
>
>Maybe I need to re-read the earlier posts .. I don't understant why
>Salvo is a different entity, in light of the fact that it does a lot
>of "work" that would otherwise be done by code the applications
>programmer might write him/herself, e.g. timers to run various
>processes at different rates.
Probably because operating system routines encapsulate a rather
portable-enriched share of algorithms, as compared to a complete
application of which the operating system portion is only a
part. Queue handling, for example, can be made very portable.
By comparison, it's more difficult to make gated integrator
timing code quite as portable.
In other words, there's some routines which can be designed well
for portability and some which are more coupled to the specific
situation. And when you select out the collection of them which
can go under the heading of "operating system" you tend to self
select a portable-enriched grouping in doing so.
Jon
Reply by ●July 11, 20032003-07-11
--- In msp430@msp4..., Jonathan Kirwan <jkirwan@e...> wrote: > >Maybe I need to re-read the earlier posts .. I don't understant why > >Salvo is a different entity, in light of the fact that it does a lot > >of "work" that would otherwise be done by code the applications > >programmer might write him/herself, e.g. timers to run various > >processes at different rates. > > Probably because operating system routines encapsulate a rather > portable-enriched share of algorithms, as compared to a complete > application of which the operating system portion is only a > part. Queue handling, for example, can be made very portable. > By comparison, it's more difficult to make gated integrator > timing code quite as portable. > > In other words, there's some routines which can be designed well > for portability and some which are more coupled to the specific > situation. And when you select out the collection of them which > can go under the heading of "operating system" you tend to self > select a portable-enriched grouping in doing so. OK, now I understand what Al what getting at. Thanks for a different perspective / presentation. My solution for making portable such non-portable, hardware-dependent code really boils down to conditionally compiling different versions based on the hardware target. My approach to writing such routines (e.g. your gated integrator timing code example) would be almost always to write it in C first, and examine the compiler's output. If it's acceptable, I'd leave it at that. If not, I'd probably re-code directly in assembly. Some compilers are really efficient, though one sometimes has to "see things their way" to get the best results (speed and/or size). But I'd probably keep the C "template" just to speed things up for subsequent ports. Having to deal with weird assembly-language issues (like the PIC's treatment of status flags when doing subtraction) tends to make me go batty -- I'd rather at least have the compiler guide me in dealing with simple issues (like branch statements, which condition codes to use, function preambles, etc.) than have to learn all of that from scratch with each new port. Of course, as I become more familiar with a particular instruction set, I'll often go back and optimize to get tighter code. In summary, in those cases where I find assembly is required, I almost always start in C, examine listings, and iterate in Assembly until I get the result I want. As pertains to the topic, I find a mixed C/Assembly approach makes for faster results than just pure Assembly. --Andrew Kalman aek ... at ... pumpkininc ... dot ... com
Reply by ●July 11, 20032003-07-11
>> That's useless for this discussion. Nobody writes code like
this,
and of course it's also possible to construct a similar example in
assembler. <<
Er, I think you'll find that nobodyo's posting was firmly tongue in
cheek!
It's German humour, man! ;-)
It brought a smile to my face anyhow! :-)
------
<nobodyo@nobo...> wrote:
> under http://www.ioccc.org/years.html you can find
good examples of
> C-Code which can't be understood without the explanation.
>
> One example:
>
> #include <stdio.h>
> int l;int main(int o,char **O,
> int I){char c,*D=O[1];if(o>0){
That's useless for this discussion. Nobody writes code like this,
and of course it's also possible to construct a similar example in
assembler.
-
Reply by ●July 13, 20032003-07-13
Andreas Schwarz wrote:
> <nobodyo@nobo...> wrote:
>
>
>>under http://www.ioccc.org/years.html you can find good examples of
>>C-Code which can't be understood without the explanation.
>>
>>One example:
>>
>>#include <stdio.h>
>>int l;int main(int o,char **O,
>>int I){char c,*D=O[1];if(o>0){
>
>
> That's useless for this discussion. Nobody writes code like this,
> and of course it's also possible to construct a similar example in
> assembler.
Perhaps because assembler is inherently cleaner and more readable ;@}
Al
Reply by ●July 13, 20032003-07-13
aekalman wrote:
> --- In msp430@msp4..., onestone
<onestone@b...> wrote:
>
>>Sorry if I confused Andrew, and believe me I'm not having a dig at
>>Salvo. My point is simple, you used Salvo as an example of C vs
>>assembler, but it is a different entity.
>
>
>
> Maybe I need to re-read the earlier posts .. I don't understant why
> Salvo is a different entity, in light of the fact that it does a lot
> of "work" that would otherwise be done by code the applications
> programmer might write him/herself, e.g. timers to run various
> processes at different rates.
>
Hi ANDREW. Salvo is an OS. A collection of specifically (one assumes)
very well optimised procedures designed specifically, and almost by
definition to be portable. It is effectively a function library. It is
not a language, but an application of a language to achieve a well
defined result. C and assembler on the other hand are languages, one
with compound functions, the other little more than a 'humanised'
instructions set. (well assembler can be little more than a symbolic
representation of the instruction set, which is a collection of binary
patterns. The first dual mainframe I worked on didn't use the term
assembler at all, it called it a 'mnemonic instruction set'). Being
languages I consider C and assebler tp be more similar to each other
than either is to Salvo. Basically an application program in many respects.
Al
Reply by ●July 13, 20032003-07-13
--- In msp430@msp4..., Andreas Schwarz <andreas-s@w...> wrote: > ??? Now I'm really confused. Andrew tried to explain why C was better > than assembler for his OS, but nobody was _comparing_ Salvo with C or > assembler. Basically -- I was pointing out that the much-vaunted portability of C was a real and considerable benefit in being able to apply the Salvo RTOS to a variety of different hardware platforms. In Salvo's case, the portability made a huge difference. Al's point is that in his opinion, C's portability is overrrated because it doesn't yield benefits for the sort of applications he writes, with their inherent constraints on size, power and speed. I assume he would rate Java's portability as much higher than C's, if only because Java is not (or should not be :-o ) a language for embedded systems, with all of the hardware-dependencies that accompany such systems, and therefore Java applications are free from the worries of interfacing with real hardware. I confess I don't know Java, just the hype behind it. The rest of the discussion seems to have turned to issues of personal preference, and where it makes sense / is necessary to use Assembly over C. At the very least, I hope the thread provided an impetus to the less experienced programmers here to perhaps learn more Assembly if they have shied away from it until now ... Assembly certainly has its place. --Andrew aek ... at ... pumpkininc ... dot ... com
Reply by ●July 13, 20032003-07-13
onestone <onestone@ones...> wrote:
> aekalman wrote:
>
> > --- In msp430@msp4..., onestone <onestone@b...> wrote:
> >
> >>Sorry if I confused Andrew, and believe me I'm not having a
dig at
> >>Salvo. My point is simple, you used Salvo as an example of C vs
> >>assembler, but it is a different entity.
> >
> >
> >
> > Maybe I need to re-read the earlier posts .. I don't understant
why
> > Salvo is a different entity, in light of the fact that it does a lot
> > of "work" that would otherwise be done by code the
applications
> > programmer might write him/herself, e.g. timers to run various
> > processes at different rates.
> >
>
> Hi ANDREW. Salvo is an OS. A collection of specifically (one assumes)
> very well optimised procedures designed specifically, and almost by
> definition to be portable. It is effectively a function library. It is
>
> not a language, but an application of a language to achieve a well
> defined result. C and assembler on the other hand are languages, one
> with compound functions, the other little more than a 'humanised'
> instructions set. (well assembler can be little more than a symbolic
> representation of the instruction set, which is a collection of binary
>
> patterns. The first dual mainframe I worked on didn't use the term
> assembler at all, it called it a 'mnemonic instruction set').
Being
> languages I consider C and assebler tp be more similar to each other
> than either is to Salvo. Basically an application program in many
> respects.
??? Now I'm really confused. Andrew tried to explain why C was better
than assembler for his OS, but nobody was _comparing_ Salvo with C or
assembler.
Reply by ●July 13, 20032003-07-13
Howdy, I thought I'd put my oar in the water on this subject, I'm not a software guru, I'm basically a Power Electronics Consultant who learned programming to do my job better. I've only worked on small to medium complexity control software for small to medium volume products. I program in Assembly, Forth and C and the highest volume product that has suffered my programming attention was done in Forth and has (so far) been cloned to the level of only about 60K (not ready for prime time). The biggest factor I've seen when you compare C to any other language (Assembly included) is that my customers demand that I use C. No matter how annoyingly I whine, they want C. They feel that C is the easiest to support and if I get hit by a meteor (or abducted by PETA for eating hamburgers) I'm easily replaceable by a C programmer (I think they are cloned as well). They have been told that a C embedded application is easier to port than one in Assembly, it doesn't matter the reality, it's their perception...and they have the money. I know this is not a sophisticated argument and I apologize if it doesn't elevate the discussion but I tend to listen to my customers even when they start sounding like Homer Simpson. I'd like to add that as I've 'lurked' and listen to this thread I appreciate the interesting and informed opinions and enjoy the varied and various contibutors. Regards, Mark