From: David Brown on
CBFalconer wrote:
> David Brown wrote:
> ... snip ...
>> What is much more relevant is whether the register set and
>> addressing modes of the msp430 really are appropriate for their
>> target applications, or whether they would have been better off
>> with the PDP-11 arrangement. I'm far from convinced - certainly,
>> the example you gave (PC-relative CALL) is obscure indeed, and I
>> think the benefit of more registers well outweighs this missing
>> feature.
>
> Hardly obscure. This, together with PC relative jumps, is what
> makes object code intrinsically relocatable, and I consider it a
> valuable feature. Now it becomes trivial to swap code segments in
> and out as needed.
>

In terms of the PDP-11 (did it count as a mini or a mainframe?), making
code position independent and/or relocatable is important, and greatly
adds to the flexibility of the architecture. In terms of a small
embedded processor, running a single statically linked program with no
paging or other virtual memory arrangements, relocatable or position
independent code is irrelevant, and any space (in the instruction set
space, or die space) used for it is wasted. Similarly, addressing modes
involving double indirection might be extremely useful for implementing
virtual methods in an object oriented language, but very rarely used in
C or assembly, which are the typical languages of choice on the msp430.

I'm certainly not going to argue that the msp430 ISA would have worked
better for PDP-11 machines, nor that the msp430 is the ideal ISA - just
that it might be better for embedded applications than the PDP-11.


From: Mark Borgerson on
In article <44411f7e$1(a)news.wineasy.se>,
david(a)westcontrol.removethisbit.com says...
> CBFalconer wrote:
> > David Brown wrote:
> > ... snip ...
> >> What is much more relevant is whether the register set and
> >> addressing modes of the msp430 really are appropriate for their
> >> target applications, or whether they would have been better off
> >> with the PDP-11 arrangement. I'm far from convinced - certainly,
> >> the example you gave (PC-relative CALL) is obscure indeed, and I
> >> think the benefit of more registers well outweighs this missing
> >> feature.
> >
> > Hardly obscure. This, together with PC relative jumps, is what
> > makes object code intrinsically relocatable, and I consider it a
> > valuable feature. Now it becomes trivial to swap code segments in
> > and out as needed.
> >
>
> In terms of the PDP-11 (did it count as a mini or a mainframe?), making
> code position independent and/or relocatable is important, and greatly
> adds to the flexibility of the architecture. In terms of a small
> embedded processor, running a single statically linked program with no
> paging or other virtual memory arrangements, relocatable or position
> independent code is irrelevant, and any space (in the instruction set
> space, or die space) used for it is wasted. Similarly, addressing modes
> involving double indirection might be extremely useful for implementing
> virtual methods in an object oriented language, but very rarely used in
> C or assembly, which are the typical languages of choice on the msp430.
>
> I'm certainly not going to argue that the msp430 ISA would have worked
> better for PDP-11 machines, nor that the msp430 is the ideal ISA - just
> that it might be better for embedded applications than the PDP-11.
>
There may be some empirical evidence to support that. IIRC, no one
has implemented a single-chip PDP-11 that runs on 50milliwatts. ;-)
(The PDP-11 should be a lot less, without all those ADCs,
SPIs, Timers and UARTS!)


Mark Borgerson



From: Jonathan Kirwan on
On 15 Apr 2006 18:29:50 +0100, David Brown
<david(a)westcontrol.removethisbit.com> wrote:

>CBFalconer wrote:
>> David Brown wrote:
>> ... snip ...
>>> What is much more relevant is whether the register set and
>>> addressing modes of the msp430 really are appropriate for their
>>> target applications, or whether they would have been better off
>>> with the PDP-11 arrangement. I'm far from convinced - certainly,
>>> the example you gave (PC-relative CALL) is obscure indeed, and I
>>> think the benefit of more registers well outweighs this missing
>>> feature.
>>
>> Hardly obscure. This, together with PC relative jumps, is what
>> makes object code intrinsically relocatable, and I consider it a
>> valuable feature. Now it becomes trivial to swap code segments in
>> and out as needed.
>>
>
>In terms of the PDP-11 (did it count as a mini or a mainframe?), making
>code position independent and/or relocatable is important, and greatly
>adds to the flexibility of the architecture. In terms of a small
>embedded processor, running a single statically linked program with no
>paging or other virtual memory arrangements, relocatable or position
>independent code is irrelevant,
><snip>

It shocks me to read this from you. It is patently untrue in the case
of the MSP-430. Position independent code is important in this case,
as it enables a number of useful options. One of them is being able
to download small "programs" into the ram, allowing the downloader to
place them as the memory allocator allows, and to execute them.
Another is to allow flashable extensions to be downloaded.

If you need objective evidence, beyond my own theory about this, you
need only note that IAR already supports the production of position
independent code to a degree and is involved in broadening out that
capability in the case of the MSP-430. That fact speaks for itself.

So you have both theory and practice to dispute your comment.

Jon
From: David Brown on
Jonathan Kirwan wrote:
> On 15 Apr 2006 18:29:50 +0100, David Brown
> <david(a)westcontrol.removethisbit.com> wrote:
>
>> CBFalconer wrote:
>>> David Brown wrote:
>>> ... snip ...
>>>> What is much more relevant is whether the register set and
>>>> addressing modes of the msp430 really are appropriate for their
>>>> target applications, or whether they would have been better off
>>>> with the PDP-11 arrangement. I'm far from convinced - certainly,
>>>> the example you gave (PC-relative CALL) is obscure indeed, and I
>>>> think the benefit of more registers well outweighs this missing
>>>> feature.
>>> Hardly obscure. This, together with PC relative jumps, is what
>>> makes object code intrinsically relocatable, and I consider it a
>>> valuable feature. Now it becomes trivial to swap code segments in
>>> and out as needed.
>>>
>> In terms of the PDP-11 (did it count as a mini or a mainframe?), making
>> code position independent and/or relocatable is important, and greatly
>> adds to the flexibility of the architecture. In terms of a small
>> embedded processor, running a single statically linked program with no
>> paging or other virtual memory arrangements, relocatable or position
>> independent code is irrelevant,
>> <snip>
>
> It shocks me to read this from you. It is patently untrue in the case
> of the MSP-430. Position independent code is important in this case,
> as it enables a number of useful options. One of them is being able
> to download small "programs" into the ram, allowing the downloader to
> place them as the memory allocator allows, and to execute them.
> Another is to allow flashable extensions to be downloaded.
>

Memory allocators that move bits of program code around in ram doesn't
sound to me like a typical situation in a small embedded system - few
applications on an msp430 would even go as far as having a dynamic
memory allocator for data, never mind for swapping bits of code here and
there. I have certainly made use of the msp430's ability to run code
from ram - but the load address is fixed at link time (by allocating
your flash programming functions to specific sections). Even if you are
re-using the ram space as data during "run" mode, and code during
"update" mode, I'd still have the update code linked to a specific address.

There could be times when position independent code is useful (though I
still can't think of a case when it might be the best solution on a
typical msp430 system), so it is important that it is possible to
generate such code. My argument is merely that such code is so rare
that it is wrong to add features to the cpu for optimising such code -
the space (die space, instruction set space, power, speed, or whatever)
is better used for more common functions. Thus I think TI's application
note showing suitable code sequences is a perfectly reasonable solution.

Remember, most competing micros (typically 8-bit rather than 16-bit)
have no support for position independent code, since they have no
support for executing code from RAM. (It would be possible to burn the
code into different bits of flash, but it's far from a sensible solution
in practice.) No one would consider the AVR to be limited by the lack
of position independent CALL addressing modes.

> If you need objective evidence, beyond my own theory about this, you
> need only note that IAR already supports the production of position
> independent code to a degree and is involved in broadening out that
> capability in the case of the MSP-430. That fact speaks for itself.
>

Since it is possible to make position independent code for the msp430,
and perhaps some people will want it (after all, some people like to use
malloc and printf on a micro with 256 bytes ram), then there is
absolutely nothing to lose by supporting it. Offhand, I don't know
whether gcc supports it or not. But supporting it and wasting hardware
to optimise it are two totally different things - relying on software to
provide obscure functionality is standard practice in hardware designs.

> So you have both theory and practice to dispute your comment.
>

I still disagree that position independent code has much use in an
msp430 system - certainly, it is rare enough that specific hardware
support would be wasted when there is a perfectly workable (albeit
slightly bigger and slower) software technique. Perhaps I have fallen
for the temptation of extrapolating my own experiences and opinions as
"general usage" - but perhaps you too have done so.

mvh.,

David


> Jon
From: joyce on
i,all,BesTech is a world-class professional supplier of IC and
Diode,has more than 10

years history in China and international markets!
BesTech is a credible IC and diode sources for your product
line, assembly line,

and brokers as well.
BesTech is specializing obsolete , hard to find, long
lead-time parts, military,

industry , commercial, medical and transportation electronics
components!
BesTech offers world famous brand series of electronic
components, such as: AD,

AMD, Altera, Intersil, Linear Technology, Maxim, Motorola, NS, ST, TI,
Ziglog, etc....
BesTech is doing utmost to offer china market, international
brokers ,

manufacturers with first- hand source under the Tenet of Honesty,
Sincere cooperation,

Customer first , warm-hearted service.
BesTech Sincerely welcome customers from various circles to
negotiate and develop

cooperations with us .Let us jointly create our success!.

Following are some of our hot parts:
ML2003IQ,ML2003CQ,311-1002-01,311-1011-02,311-1012-02,311-1013-40,311-1013-42,311-1013-

75,74ABT899CQC,74ACT899QC,74ACT899QL,74F899QC,74FCT899AQC,EPM7512AETC144-10,EPM7512AETC144-

12,EPM7512AETC144-7,FSA2509M,FX469LS,HD153119CP,M62301FP,M62320FP,SP301CT,SP302CT,SP303CT,
SP304CT,T7275CEL,T7504ML,TC426IJA,TC426MJA,TC427IJA,TC427MJA,TC428IJA,TC429IJA,TC4420IJA,TC4

422MJA,TC4423MJA,TC4424MJA,TC4426MJA,TC4427MJA,TC4429MJA,TC445MJE,TC4469COE,TC4469EJD,TC4469

MJD,TC500AIJE,TC900AIJA,TC900IJA,TC911AIJA,TC913IJA,TC9400EJD,TC9400MJD,TC9401EJD,TC9402EJD,
TC962IJA,TDF8704T4,
TDF8704T5,TL321CP,TLC320AC02CFN,TLC320AC02IFN,TP1321,TP4780-

02,TP485,TP4866,TSC232EJE,TSC301AL,TSC301AL/CL,TSC301BL,TSC301CJ,TSC301CL,TSC301ML,TSC302AL,

TSC302AL/CL,TSC302BL,TSC302CJ,TSC302CL,TSC302ML,TSC303AL,TSC303AL/CL,TSC303BL,TSC303CJ,TSC30

3CL,TSC303ML,TSC304AL,tsC304AL/CL,TSC304BL,TSC304CJ,TSC304CL,TSC304ML,TSC306AL,TSC306AL/CL,T

SC306BL,TSC306CJ,TSC306CL,TSC306ML,TSC311AL,TSC311AL/CL,TSC311BL,TSC311CJ,TSC311CL,TSC311ML,

TSC312AL,TSC312AL/CL,TSC312BL,TSC312CJ,TSC312CL,TSC312ML,TSC313AL,TSC313AL/CL,TSC313BL,TSC31

3CJ,TSC313CL,TSC313ML,TSC321AL,TSC321AL/CL,TSC321BL,TSC321CJTSC321CL,TSC321ML,TSC322AL,TSC32

2AL/CL,TSC322BL,TSC322CJ,TSC322CL,TSC322ML,TSC323AL,TSC323AL/CL,TSC323BL,TSC323CJ,TSC323CL,T

SC323ML,TSC324AL,TSC324AL/CL,TSC324BL,TSC324CJ,TSC324CL,TSC324ML,TSC325AL,TSC325AL/CL,TSC325

BL,TSC325CJ,TSC325CL,TSC325ML,TSC326AL,TSC326AL/CL,TSC326BL,TSC326CJ,TSC326CL,TSC326ML,TSC33

1AL,TSC331AL/CL,TSC331BL,TSC331CJ,TSC331CL,TSC331ML,TSC332AL,TSC332AL/CL,TSC332BL,TSC332CJ,T

SC332CL,TSC332ML,TSC333AL,TSC333AL/CL,TSC333BL,TSC333CJ,TSC333CL,TSC333ML,TSC334AL,TSC334AL/

CL,TSC334BL,TSC334CJ,TSC334CL,TSC334ML,TSC335AL,TSC335AL/CL,TSC335BL,TSC335CJ,TSC335CL,TSC33

5ML,TSC341AL,TSC341AL/CL,TSC341BL,TSC341CJ,TSC341CL,TSC341ML,TSC342AL,TSC342AL/CL,TSC342BL,T

SC342CJ,TSC342CL,TSC342ML,TSC343AL,TSC343AL/CL,TSC343BL,TSC343CJ,TSC343CL,TSC343ML,TSC344AL,

TSC344AL/CL,TSC344BL,TSC344CJ,TSC344CL,TSC344ML,TSC347AL,TSC347AL/CL,TSC347BL,TSC347CJ,TSC34

7CL,TSC347ML,TSC355AL,TSC355AL/CL,TSC355BL,TSC355CJ,TSC355CL,TSC355ML,TSC361AL,TSC361AL/CL,T

SC361BL,TSC361CJ,TSC361CL,TSC361ML,TSC362AL,TSC362AL/CL,TSC362BL,TSC362CJ,TSC362CL,TSC362ML,

TSC363AL,TSC363AL/CL,TSC363BL,TSC363CJ,TSC363CL,TSC363ML,TSC367AL,TSC367AL/CL,TSC367BL,TSC36

7CJ,TSC367CL,TSC367ML,TSC368AL,TSC368AL/CL,TSC368BL,TSC368CJ,TSC368CL,TSC368ML,TSC370AL,TSC3

70AL/CL,TSC370BL,TSC370CJ,TSC370CL,TSC370ML,TSC371AL,TSC371AL/CL,TSC371BL,TSC371CJ,TSC371CL,

TSC371ML,TSC372AL,TSC372AL/CL,TSC372BL,TSC372CJ,TSC372CL,TSC372ML,TSC373AL,TSC373AL/CL,TSC37

3BL,TSC373CJ,TSC373CL,TSC373ML,TSC374AL,TSC374AL/CL,TSC374BL,TSC374CJ,TSC374CL,TSC374ML,TSC3

75AL,TSC375AL/CL,TSC375BL,TSC375CJ,TSC375CL,TSC375ML,TSC380AL,TSC380AL/CL,TSC380BL,TSC380CJ,

TSC380CL,TSC380ML,TSC381AL,TSC381AL/CL,TSC381BL,TSC381CJ,TSC381CL,TSC381ML,TSC382AL,TSC382AL

/CL,TSC382BL,TSC382CJ,TSC382CL,TSC382ML,TSC383AL,TSC383AL/CL,TSC383BL,TSC383CJ,TSC383CL,TSC3

83ML,TSC390AL,TSC390AL/CL,TSC390BL,TSC390CJ,TSC390CL,TSC390ML,TSC395AL,TSC395AL/CL,TSC395BL,

TSC395CJ,TSC395CL,TSC395ML,TSC396AL,TSC396AL/CL,TSC396BL,TSC396CJ,TSC396CL,TSC396ML,TSC426CP

A,TSC427CPA,TSC427IJA,TSC427MJA,TSC428CPC,TSC429CPA,TSC445IJE,TSC575BN,TSC709AL,TSC709AL/CL,

TSC709BL,TSC709CJ,TSC709CL,TSC709ML,TSC7106IJL,TSC723AL,TSC723AL/CL,TSC723BL,TSC723CJ,TSC723

CL,TSC723ML,TSC741AL,TSC741AL/CL,TSC741BL,TSC741CJ,TSC741CL,TSC741ML,TSC7652IJA,TSC809AL,TSC

809AL/CL,TSC809BL,TSC809CJ,TSC809CL,TSC809ML,TSC844AL,TSC844AL/CL,TSC844BL,TSC844CJ,TSC844CL

,TSC844ML,TSC8701CL,TSC911AIJI,TSC914AIJD,TSC918,TSC9400CL,TSC9401CL,TSS400CFNS1,3820-0019-

00,3820-0001-1A,Access our expansive inventory quickly and easily with
the BesTech online

search.www.bestechltd.com