From: Clem Cole <clemc@ccc.com>
To: Warner Losh <imp@bsdimp.com>
Cc: TUHS main list <tuhs@minnie.tuhs.org>, Will Senn <will.senn@gmail.com>
Subject: Re: [TUHS] wump.c for v6
Date: Mon, 6 Jan 2020 16:08:50 -0500 [thread overview]
Message-ID: <CAC20D2M5bpr_SY2VNYpQXTMYbsTQH94WRzJndmm0EJcJdWohhg@mail.gmail.com> (raw)
In-Reply-To: <CANCZdfoEhGBzy13mGvw8jJNz0pvYVjBFy3-9BQ0mN8-4HB7bLw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4897 bytes --]
You got my curiosity up and found the V5 and V6 source code (I did not have
V4 easy to get, where I am today) ;-)
A big clue of it being C will be having crt0.s (below) in the first few
bytes of the disassembled code. We see the a.out header (i.e. start at
offset 20 for the code) and look what's there. I'm going to guess that is
at 046 is the address of _main, from the call instruction at address 034.
The Trap 1 is a sys exit @ address 044.
But .. the V6 crt0.s source has a call to _exit, which is lacking in the
binary below. So it means that the binary was not created with the C
runtime and probably not the v6 C compiler in the sources. So I took a
peak at the V6 crt0.s and guess what -- it matches!
So, I'm going to guess the binary was compiled and linked with an earlier
compiler. Ao ... if I had to guess, the programs are similar, but possibly
different.
% more wump.das
;
; pdp11dasm version 0.0.3
; disassembly of wump
;
000000: 000407 br 20 ; ..
;
000002: 005334 dec @(r4)+ ; \.
000004: 004524 jsr r5,(r4)+ ; T.
000006: 002312 bge 37777777634 ; J.
000010: 000000 halt ; ..
000012: 000000 halt ; ..
000014: 000000 halt ; ..
;
000016: 000001 wait ; ..
000020: 170011 setd ; .p
000022: 010600 mov r6,r0 ; ..
000024: 011046 mov (r0),-(r6) ; &.
000026: 005720 tst (r0)+ ; P.
000030: 010066 000002 mov r0,2(r6) ; 6...
000034: 004767 000006 call 46 ; w...
000040: 022626 cmp (r6)+,(r6)+ ; .%
000042: 005000 clr r0 ; ..
000044: 104401 trap 1 ; ..
000046: 004567 005174 jsr r5,5246 ; w.|.
000052: 005746 tst -(r6) ; f.
000054: 012716 011230 mov #11230,(r6) ; N...
000060: 004737 002776 call @#2776 ; _.~.
000064: 004767 002262 call 2352 ; w.2.
000070: 022700 000171 cmp #171,r0 ; @%y.
000074: 001027 bne 154 ; ..
000076: 005004 clr r4 ; ..
000100: 010400 mov r4,r0 ; ..
000102: 006300 asl r0 ; @.
000104: 005760 005334 tst 5334(r0) ; p.\.
000110: 001421 beq 154 ; ..
000112: 032704 000001 bit #1,r4 ; D5..
000116: 001403 beq 126 ; ..
000120: 012716 000024 mov #24,(r6) ; N...
000124: 000402 br 132 ; ..
;
000126: 012716 000003 mov #3,(r6) ; N...
000132: 010400 mov r4,r0 ; ..
000134: 006300 asl r0 ; @.
000136: 016046 005334 mov 5334(r0),-(r6) ; &.\.
000142: 004737 002776 call @#2776 ; _.~.
V6: s4/crt0.s:
/ C runtime startoff
.globl savr5
.globl _exit
.globl _main
start:
setd
mov sp,r0
mov (r0),-(sp)
tst (r0)+
mov r0,2(sp)
jsr pc,_main
mov r0,(sp)
jsr pc,*$_exit
sys exit
.bss
savr5: .=.+2
V5: s4/crt0.s:
/ C runtime startoff
.globl savr5
.globl _main
start:
setd
mov sp,r0
mov (r0),-(sp)
tst (r0)+
mov r0,2(sp)
jsr pc,_main
cmp (sp)+,(sp)+
clr r0
sys exit
.bss
savr5: .=.+2
On Mon, Jan 6, 2020 at 1:48 PM Warner Losh <imp@bsdimp.com> wrote:
>
>
> On Mon, Jan 6, 2020 at 11:38 AM Will Senn <will.senn@gmail.com> wrote:
>
>> On 1/6/20 12:29 PM, Warner Losh wrote:
>>
>> The good news is that disassembly will tell you right away if it was
>> written in C or not.
>>
>>
>> OK. I give up. How?
>>
>
> Generally, the C compiler generates code that's quite distinctive (at
> least PCC does, not sure about Dennis' compiler). People writing free
> assembler tend to do really weird things for function entry / return.
>
> And it will likely tell you if it's some weird wrapper around another
> binary, though that wasn't too common at bell labs.
>
> Warner
>
[-- Attachment #2: Type: text/html, Size: 8476 bytes --]
next prev parent reply other threads:[~2020-01-06 21:09 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-06 6:13 Will Senn
2020-01-06 15:20 ` Clem Cole
2020-01-06 15:24 ` Clem Cole
2020-01-06 16:25 ` Will Senn
2020-01-06 16:35 ` Clem Cole
2020-01-06 18:29 ` Warner Losh
2020-01-06 18:38 ` Will Senn
2020-01-06 18:48 ` Warner Losh
2020-01-06 21:08 ` Clem Cole [this message]
2020-01-06 21:38 ` Clem Cole
2020-01-06 22:14 ` Warner Losh
2020-01-06 23:46 ` Will Senn
2020-01-07 20:04 ` Sean Dwyer via TUHS
2020-01-07 21:08 ` Clem Cole
2020-01-08 6:35 ` Sean Dwyer via TUHS
2020-01-06 19:10 ` Bakul Shah
2020-01-06 20:29 ` Will Senn
2020-01-07 0:40 Noel Chiappa
2020-01-07 0:44 ` Warner Losh
2020-01-07 1:58 Noel Chiappa
2020-01-10 14:27 Noel Chiappa
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=CAC20D2M5bpr_SY2VNYpQXTMYbsTQH94WRzJndmm0EJcJdWohhg@mail.gmail.com \
--to=clemc@ccc.com \
--cc=imp@bsdimp.com \
--cc=tuhs@minnie.tuhs.org \
--cc=will.senn@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).