[net.lang.c] PDP-11 as 68000 Cloner

cottrell@nbs-vms.arpa (COTTRELL, JAMES) (11/20/85)

/*  >> = Me, > = Ron Natalie
> > Of course there are *some* differences. And of course the 68000 is a 
> > 32-bit machine (crammed onto a 16-bit bus) while the pdp is a 16-bit one.
> 
> And it has the bytes in the wrong order.

Great! Another Little Endian!
 
> > As far as relative code, the pdp is missing something. How do you
> > load the address of a variable relative to the PC? This way:
> > 
> > 		mov	pc,r0			; address of `here'
> > 	here:	add	#foobar-here,r0		; make relative
> > 
> Bad example, now what are you going to do with this loaded
> address?  PDP-11 instructions allow things like
> 
> 		tst	foobar(pc)
> 
> which is exactly equivalent to
> 		
> 		tst	foobar

Bad example, now what can I do with that loaded question? You see,
foobar just happens to be an array! What I need to do is get it's
address into a register so I can auto-{in,de}crement the bugger. Or
maybe I want to pass it's address as a parameter to
str{cpy,cat,cmp,mung}. Since this ain't no VAX, we can't double index as

		tst	foobar(pc)[r0]. 

And it's just a box of rain, I don't know who put it there
Believe if if you need it, or leave it if you dare

	jim		cottrell@nbs
*/
------

cdl@mplvax.UUCP (Carl Lowenstein) (12/06/85)

In article <3418@brl-tgr.ARPA> cottrell@nbs-vms.arpa (COTTRELL, JAMES) writes:
>/*  >> = Me, > = Ron Natalie
>> > Of course there are *some* differences. And of course the 68000 is a 
>> > 32-bit machine (crammed onto a 16-bit bus) while the pdp is a 16-bit one.
>> 
>> And it has the bytes in the wrong order.
>
>Great! Another Little Endian!
> 
>> > As far as relative code, the pdp is missing something. How do you
>> > load the address of a variable relative to the PC? This way:
>> > 
>> > 		mov	pc,r0			; address of `here'
>> > 	here:	add	#foobar-here,r0		; make relative
>> > 
>> Bad example, now what are you going to do with this loaded
>> address?
>
>Bad example, now what can I do with that loaded question? You see,
>foobar just happens to be an array! What I need to do is get it's
>address into a register so I can auto-{in,de}crement the bugger.
>
>	jim		cottrell@nbs
>*/
The most likely thing I would do with that loaded register is send
the value off to some external hardware, like a DMA controller,
which needs to know absolute addresses.

-- 
	carl lowenstein		marine physical lab	u.c. san diego
	{ihnp4|decvax|akgua|dcdwest|ucbvax}	!sdcsvax!mplvax!cdl