From: David Brown on 15 Apr 2006 13:29 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 15 Apr 2006 13:29 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 15 Apr 2006 13:31 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 17 Apr 2006 14:56 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 8 May 2006 14:25
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 |