The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: carl.lowenstein@gmail.com (Carl Lowenstein)
Subject: [TUHS] Query on PDP-11 assembly
Date: Wed, 30 Apr 2008 08:08:51 -0700	[thread overview]
Message-ID: <5904d5730804300808p59690427rf088e841354a41ec@mail.gmail.com> (raw)
In-Reply-To: <20080430115651.GA86539@minnie.tuhs.org>

On Wed, Apr 30, 2008 at 4:56 AM, Warren Toomey <wkt at tuhs.org> wrote:
> All, I'm trying to write a PDP-11 disassembler for a.out files. I'm having
>  trouble dealing with jsrs. Take, for example, the code here:
>  http://minnie.tuhs.org/UnixTree/1972_stuff/s1/frag19.html
>
>  I can happily deal with the   jsr pc,do   type of jsr, but the ones
>  involving r5 have me stumped, e.g.:
>
>         jsr     r5,questf; < nonexistent\n\0>; .even
>
>  It appears that data is being inserted into the executable directly
>  after the jsr instruction. How does the rts which returns from the jsr
>  know how much data to skip, and what is the involvement of r5 here?

Standard subroutine calling sequence.

The called routine must know how many parameters it is called with.
It retrieves them by MOV (R5)+, <somewhere>.
This advances R5 so that eventually it points to the return address,
and the return is done as RTS R5.

A more advanced calling sequence could insert the number of parameters
as the first value after the JSR, and the called routine would then
retrieve that number and use it to tell when it had fetched the right
amount of data.

    carl
-- 
    carl lowenstein         marine physical lab     u.c. san diego
                                                 clowenstein at ucsd.edu



  parent reply	other threads:[~2008-04-30 15:08 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-30 11:56 Warren Toomey
2008-04-30 13:55 ` Brantley Coile
2008-04-30 14:41   ` Naoki Hamada
2008-05-01 23:47     ` Warren Toomey
2008-04-30 16:53   ` Milo Velimirovic
2008-04-30 17:00     ` Larry McVoy
2008-04-30 17:47       ` John Cowan
2008-04-30 17:59         ` Larry McVoy
2008-04-30 15:08 ` Carl Lowenstein [this message]
2008-04-30 16:20 James A. Markevitch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5904d5730804300808p59690427rf088e841354a41ec@mail.gmail.com \
    --to=carl.lowenstein@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).