Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

Neil Armstrong tripped.


devel / comp.arch / Re: Around the bike shed: Instruction names and assembler syntax

SubjectAuthor
* Around the bike shed: Instruction names and assembler syntaxThomas Koenig
+- Re: Around the bike shed: Instruction names and assembler syntaxTerje Mathisen
+* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|+- Re: Around the bike shed: Instruction names and assembler syntaxStephen Fuld
|+* Re: Around the bike shed: Instruction names and assembler syntaxThomas Koenig
||`* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|| `* Re: Around the bike shed: Instruction names and assembler syntaxThomas Koenig
||  `* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
||   +* Re: Around the bike shed: Instruction names and assembler syntaxTerje Mathisen
||   |`- Re: Around the bike shed: Instruction names and assembler syntaxThomas Koenig
||   `* Fortran for The Mill (was: Around the bike shed: Instruction namesThomas Koenig
||    `- Re: Fortran for The Mill (was: Around the bike shed: InstructionIvan Godard
|`* Re: Around the bike shed: Instruction names and assembler syntaxJohn Levine
| +- Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
| +* Re: Around the bike shed: Instruction names and assembler syntaxEricP
| |`* Re: Around the bike shed: Instruction names and assembler syntaxJohn Levine
| | `* Re: Around the bike shed: Instruction names and assembler syntaxEricP
| |  `- Re: high and higner level assemblers, was Around the bike shed: Instruction nameJohn Levine
| `* Re: Around the bike shed: Instruction names and assembler syntaxThomas Koenig
|  `* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|   `* Re: Around the bike shed: Instruction names and assembler syntaxNiklas Holsti
|    `* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|     `* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      +* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      |`* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      | `* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      |  `* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      |   +- Re: Around the bike shed: Instruction names and assembler syntaxTerje Mathisen
|      |   `* Re: Around the bike shed: Instruction names and assembler syntaxStefan Monnier
|      |    +- Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      |    `* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      |     `* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      |      `* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      |       `* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      |        `* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      |         +* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      |         |+* Re: Around the bike shed: Instruction names and assembler syntaxMitchAlsup
|      |         ||+* Re: Around the bike shed: Instruction names and assembler syntaxTim Rentsch
|      |         |||`* Re: Around the bike shed: Instruction names and assembler syntaxJohn Levine
|      |         ||| +- Re: Around the bike shed: Instruction names and assembler syntaxDavid Brown
|      |         ||| `- Re: Around the bike shed: Instruction names and assembler syntaxTim Rentsch
|      |         ||`- Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      |         |`* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      |         | `- Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      |         `* Re: Around the bike shed: Instruction names and assembler syntaxTim Rentsch
|      |          +* Re: Around the bike shed: Instruction names and assembler syntaxStefan Monnier
|      |          |`- Re: Around the bike shed: Instruction names and assembler syntaxTim Rentsch
|      |          `* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      |           +- Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      |           `* Re: Around the bike shed: Instruction names and assembler syntaxTim Rentsch
|      |            `- Re: Around the bike shed: Instruction names and assembler syntaxStefan Monnier
|      +* Re: Around the bike shed: Instruction names and assembler syntaxThomas Koenig
|      |`* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      | +* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      | |+* Re: Around the bike shed: Instruction names and assembler syntaxThomas Koenig
|      | ||`* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      | || +- Re: Around the bike shed: Instruction names and assembler syntaxMitchAlsup
|      | || `* Re: Around the bike shed: Instruction names and assembler syntaxJohn Levine
|      | ||  `- Re: Around the bike shed: Instruction names and assembler syntaxNiklas Holsti
|      | |`* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      | | `* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      | |  `* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      | |   `* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      | |    `- Re: Around the bike shed: Instruction names and assembler syntaxTerje Mathisen
|      | +- Re: Around the bike shed: Instruction names and assembler syntaxMitchAlsup
|      | +* Re: Around the bike shed: Instruction names and assembler syntaxNiklas Holsti
|      | |`* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|      | | `- Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|      | `* Re: Around the bike shed: Instruction names and assembler syntaxTerje Mathisen
|      |  `- Re: Around the bike shed: Instruction names and assembler syntaxThomas Koenig
|      `* Re: Around the bike shed: Instruction names and assembler syntaxTim Rentsch
|       +* Re: Around the bike shed: Instruction names and assembler syntaxNiklas Holsti
|       |`* Re: Around the bike shed: Instruction names and assembler syntaxTim Rentsch
|       | `* Re: Around the bike shed: Instruction names and assembler syntaxMitchAlsup
|       |  +* Re: Around the bike shed: Instruction names and assembler syntaxDavid Brown
|       |  |+* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|       |  ||+* Re: Around the bike shed: Instruction names and assembler syntaxEricP
|       |  |||+- Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|       |  |||`* Re: Around the bike shed: Instruction names and assembler syntaxMitchAlsup
|       |  ||| +* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|       |  ||| |+* Re: Around the bike shed: Instruction names and assembler syntaxNiklas Holsti
|       |  ||| ||+* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|       |  ||| |||`* Re: Around the bike shed: Instruction names and assembler syntaxTerje Mathisen
|       |  ||| ||| +- Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|       |  ||| ||| `- Re: Around the bike shed: Instruction names and assembler syntaxStefan Monnier
|       |  ||| ||`* Re: Around the bike shed: Instruction names and assembler syntaxDavid Brown
|       |  ||| || `* Re: Around the bike shed: Instruction names and assembler syntaxNiklas Holsti
|       |  ||| ||  +* Re: Around the bike shed: Instruction names and assembler syntaxDavid Brown
|       |  ||| ||  |`* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|       |  ||| ||  | `* Re: Around the bike shed: Instruction names and assembler syntaxDavid Brown
|       |  ||| ||  |  `- Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|       |  ||| ||  `- Re: Around the bike shed: Instruction names and assembler syntaxEricP
|       |  ||| |+- Re: Around the bike shed: Instruction names and assembler syntaxMitchAlsup
|       |  ||| |`- Re: Around the bike shed: Instruction names and assembler syntaxDavid Brown
|       |  ||| `- Re: Around the bike shed: Instruction names and assembler syntaxDavid Brown
|       |  ||+- Re: Around the bike shed: Instruction names and assembler syntaxStephen Fuld
|       |  ||+* Re: Around the bike shed: Instruction names and assembler syntaxDavid Brown
|       |  |||+* Re: Around the bike shed: Instruction names and assembler syntaxMitchAlsup
|       |  ||||`* Re: Around the bike shed: Instruction names and assembler syntaxDavid Brown
|       |  |||| +* Re: Around the bike shed: Instruction names and assembler syntaxTom Gardner
|       |  |||| |+* Re: Around the bike shed: Instruction names and assembler syntaxDavid Brown
|       |  |||| |`- Re: Around the bike shed: Instruction names and assembler syntaxStefan Monnier
|       |  |||| `* Re: Around the bike shed: Instruction names and assembler syntaxIvan Godard
|       |  |||`- Re: Around the bike shed: Instruction names and assembler syntaxTerje Mathisen
|       |  ||`* Re: Around the bike shed: Instruction names and assembler syntaxAnton Ertl
|       |  |`- Re: Around the bike shed: Instruction names and assembler syntaxThomas Koenig
|       |  `- Re: Around the bike shed: Instruction names and assembler syntaxTim Rentsch
|       +* Re: Around the bike shed: Instruction names and assembler syntaxThomas Koenig
|       `* Re: Around the bike shed: Instruction names and assembler syntaxMitchAlsup
+- Re: Around the bike shed: Instruction names and assembler syntaxStefan Monnier
+* Re: Around the bike shed: Instruction names and assembler syntaxMitchAlsup
+* Re: Around the bike shed: Instruction names and assembler syntaxJames Van Buskirk
+- Re: Around the bike shed: Instruction names and assembler syntaxBGB
`* Re: Around the bike shed: Instruction names and assembler syntaxThomas Koenig

Pages:12345678910
Re: Around the bike shed: Instruction names and assembler syntax

<jwvv8wwujh4.fsf-monnier+comp.arch@gnu.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23883&group=comp.arch#23883

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: monn...@iro.umontreal.ca (Stefan Monnier)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Wed, 02 Mar 2022 16:41:06 -0500
Organization: A noiseless patient Spider
Lines: 17
Message-ID: <jwvv8wwujh4.fsf-monnier+comp.arch@gnu.org>
References: <svcqrj$jj6$1@newsreader4.netcologne.de>
<svd280$fiv$1@dont-email.me> <svh2tg$j53$1@gal.iecc.com>
<svj2ki$q0p$4@newsreader4.netcologne.de> <svjblm$idv$1@dont-email.me>
<j8666pFh0klU1@mid.individual.net> <svl27r$r8m$1@dont-email.me>
<2022Mar1.133629@mips.complang.tuwien.ac.at>
<svl6qh$t5b$1@dont-email.me>
<2022Mar1.184731@mips.complang.tuwien.ac.at>
<svlsr2$ebn$1@dont-email.me>
<2022Mar2.182320@mips.complang.tuwien.ac.at>
Mime-Version: 1.0
Content-Type: text/plain
Injection-Info: reader02.eternal-september.org; posting-host="8487d8071bff558ecb5d6fb5202a68fd";
logging-data="18103"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18KuGO8arUCRvHeeDu5p4mu"
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
Cancel-Lock: sha1:U40dx2bmgvvGA8EMfQwPQ26uv+c=
sha1:ERWjuURDtiKCusX1xEIOI5Str0U=
 by: Stefan Monnier - Wed, 2 Mar 2022 21:41 UTC

> I have just looked at PSHUFB
> <https://www.felixcloutier.com/x86/pshufb>, and I found the
> operational semantics more enlightening than the prose. So there are
> cases where formal stuff is competetive. But in most cases it's too
> unwieldy.

I can't remember ever seeing a formal semantics alone without someone
complaining about the lack of accompanying prose. So you clearly need
all 3 (i.e. prose, formal definition, and examples).

It's not just to maximize the chance that the user will understand at
least one formulation, but also because redundancy is necessary to
increase the chance that bugs can be clearly seen as bugs (and not as
"well, that's what the spec says, so it must be a feature").

Stefan

Re: Around the bike shed: Instruction names and assembler syntax

<oLf*yP-Hy@news.chiark.greenend.org.uk>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23884&group=comp.arch#23884

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!nntp.terraraq.uk!nntp-feed.chiark.greenend.org.uk!ewrotcd!.POSTED!not-for-mail
From: theom+n...@chiark.greenend.org.uk (Theo)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: 02 Mar 2022 22:02:10 +0000 (GMT)
Organization: University of Cambridge, England
Lines: 51
Message-ID: <oLf*yP-Hy@news.chiark.greenend.org.uk>
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <memo.20220226104336.7708a@jgd.cix.co.uk> <svgqq7$cll$1@newsreader4.netcologne.de> <nLf*r48Hy@news.chiark.greenend.org.uk> <ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com> <svodqv$rc$1@dont-email.me>
NNTP-Posting-Host: chiark.greenend.org.uk
X-Trace: chiark.greenend.org.uk 1646258532 30386 212.13.197.229 (2 Mar 2022 22:02:12 GMT)
X-Complaints-To: abuse@chiark.greenend.org.uk
NNTP-Posting-Date: Wed, 2 Mar 2022 22:02:12 +0000 (UTC)
User-Agent: tin/1.8.3-20070201 ("Scotasay") (UNIX) (Linux/3.16.0-11-amd64 (x86_64))
Originator: theom@chiark.greenend.org.uk ([212.13.197.229])
 by: Theo - Wed, 2 Mar 2022 22:02 UTC

Stephen Fuld <sfuld@alumni.cmu.edu.invalid> wrote:
> On 3/2/2022 3:24 AM, aph@littlepinkcloud.invalid wrote:
> > Theo Markettos <theom+news@chiark.greenend.org.uk> wrote:
> >>
> >> (32 bit ARM is interesting as it was designed to be nice to program
> >> in assembly, a consideration not normally part of instruction set
> >> design these days)
> >
> > That's an interesting point. In my experience 64-bit ARM is as nice to
> > program in assembly, at least as far as the set of base instructions
> > goes, even though there are more instructions.
> >
> > I also believe that if an instruction set is nice to program in
> > assembly, it's also nice to write a code generator for.
>
> Wasn't one of the results from the studies of generated code,that was
> used to justify RISC, that "nice to write assembly in" features such as
> complex and orthogonal addressing modes just weren't used in generated code?

Yes and no. For example, ARM32 has function prologues that look something
like this:

..myfunction
STMFD sp!, {r0-r12,lr} ; save all the registers
<function body>
LDMFD sp!, {r0-r12,pc} ; unstack and set pc<-old_lr

whereas classic RISC would be something like:

..myfunction
ADDI sp, sp, #-nn ; make space on the stack
ST r0, [sp, #0]
ST r1, [sp, #4]
ST r2, [sp, #8]
....
ST lr, [sp, #nn]
<function body>
LD r0, [sp, #0]
LD r1, [sp, #4]
LD r2, [sp, #8]
....
LD lr, [sp, #nn]
ADDI sp, sp, #nn
ADD pc, lr, 0

STM/LDM is more complicated to implement (and a bit of a burden down the
years), but it makes the programmer's life a lot easier and the compiler
does use it.

Theo

Re: Around the bike shed: Instruction names and assembler syntax

<svoq6c$8h0$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23885&group=comp.arch#23885

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Wed, 2 Mar 2022 14:13:32 -0800
Organization: A noiseless patient Spider
Lines: 30
Message-ID: <svoq6c$8h0$1@dont-email.me>
References: <svcqrj$jj6$1@newsreader4.netcologne.de>
<svd280$fiv$1@dont-email.me> <svh2tg$j53$1@gal.iecc.com>
<svj2ki$q0p$4@newsreader4.netcologne.de> <svjblm$idv$1@dont-email.me>
<j8666pFh0klU1@mid.individual.net> <svl27r$r8m$1@dont-email.me>
<2022Mar1.133629@mips.complang.tuwien.ac.at> <svl6qh$t5b$1@dont-email.me>
<2022Mar1.184731@mips.complang.tuwien.ac.at> <svlsr2$ebn$1@dont-email.me>
<2022Mar2.182320@mips.complang.tuwien.ac.at>
<jwvv8wwujh4.fsf-monnier+comp.arch@gnu.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 2 Mar 2022 22:13:32 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="1f31fb0cbbe5a7a8917c2d335074ae12";
logging-data="8736"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19rF2nlHLIIPOIDDTMCFySY"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.6.1
Cancel-Lock: sha1:Y29NNgeno4FYUeYfRc8BfoYJt0g=
In-Reply-To: <jwvv8wwujh4.fsf-monnier+comp.arch@gnu.org>
Content-Language: en-US
 by: Ivan Godard - Wed, 2 Mar 2022 22:13 UTC

On 3/2/2022 1:41 PM, Stefan Monnier wrote:
>> I have just looked at PSHUFB
>> <https://www.felixcloutier.com/x86/pshufb>, and I found the
>> operational semantics more enlightening than the prose. So there are
>> cases where formal stuff is competetive. But in most cases it's too
>> unwieldy.
>
> I can't remember ever seeing a formal semantics alone without someone
> complaining about the lack of accompanying prose. So you clearly need
> all 3 (i.e. prose, formal definition, and examples).
>
> It's not just to maximize the chance that the user will understand at
> least one formulation, but also because redundancy is necessary to
> increase the chance that bugs can be clearly seen as bugs (and not as
> "well, that's what the spec says, so it must be a feature").

Take a look at the Revised Report and the Informal Introduction, and see
if you find them sufficient.

van Wijngaarden, Adriaan; Mailloux, Barry James; Peck, John Edward
Lancelot; Koster, Cornelis Hermanus Antonius; Sintzoff, Michel; Lindsey,
Charles Hodgson; Meertens, Lambert Guillaume Louis Théodore; Fisker,
Richard G., eds. (1976). Revised Report on the Algorithmic Language
ALGOL 68 (PDF). Springer-Verlag. ISBN 978-0-387-07592-1. OCLC 1991170

Lindsey, Charles H.; van der Meulen, S. G. (1977). An Informal
Introduction to Algol 68. Amsterdam; Oxford: North-Holland Publishing.
ISBN 0-7204-0726-5

Both at archive.org

Re: Around the bike shed: Instruction names and assembler syntax

<9ad3f3e0-cebf-4158-8498-fa8c267eeff4n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23887&group=comp.arch#23887

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ae9:edc6:0:b0:60c:8807:712f with SMTP id c189-20020ae9edc6000000b0060c8807712fmr17891464qkg.14.1646264973051;
Wed, 02 Mar 2022 15:49:33 -0800 (PST)
X-Received: by 2002:a05:6830:b8c:b0:59d:67ea:5da7 with SMTP id
a12-20020a0568300b8c00b0059d67ea5da7mr17243269otv.38.1646264972807; Wed, 02
Mar 2022 15:49:32 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 2 Mar 2022 15:49:32 -0800 (PST)
In-Reply-To: <oLf*yP-Hy@news.chiark.greenend.org.uk>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:446a:c769:120a:97bb;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:446a:c769:120a:97bb
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <memo.20220226104336.7708a@jgd.cix.co.uk>
<svgqq7$cll$1@newsreader4.netcologne.de> <nLf*r48Hy@news.chiark.greenend.org.uk>
<ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com> <svodqv$rc$1@dont-email.me> <oLf*yP-Hy@news.chiark.greenend.org.uk>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <9ad3f3e0-cebf-4158-8498-fa8c267eeff4n@googlegroups.com>
Subject: Re: Around the bike shed: Instruction names and assembler syntax
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 02 Mar 2022 23:49:33 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 66
 by: MitchAlsup - Wed, 2 Mar 2022 23:49 UTC

On Wednesday, March 2, 2022 at 4:02:15 PM UTC-6, Theo wrote:
> Stephen Fuld <sf...@alumni.cmu.edu.invalid> wrote:
> > On 3/2/2022 3:24 AM, a...@littlepinkcloud.invalid wrote:
> > > Theo Markettos <theom...@chiark.greenend.org.uk> wrote:
> > >>
> > >> (32 bit ARM is interesting as it was designed to be nice to program
> > >> in assembly, a consideration not normally part of instruction set
> > >> design these days)
> > >
> > > That's an interesting point. In my experience 64-bit ARM is as nice to
> > > program in assembly, at least as far as the set of base instructions
> > > goes, even though there are more instructions.
> > >
> > > I also believe that if an instruction set is nice to program in
> > > assembly, it's also nice to write a code generator for.
> >
> > Wasn't one of the results from the studies of generated code,that was
> > used to justify RISC, that "nice to write assembly in" features such as
> > complex and orthogonal addressing modes just weren't used in generated code?
> Yes and no. For example, ARM32 has function prologues that look something
> like this:
>
> .myfunction
> STMFD sp!, {r0-r12,lr} ; save all the registers
> <function body>
> LDMFD sp!, {r0-r12,pc} ; unstack and set pc<-old_lr
>
> whereas classic RISC would be something like:
>
> .myfunction
> ADDI sp, sp, #-nn ; make space on the stack
> ST r0, [sp, #0]
> ST r1, [sp, #4]
> ST r2, [sp, #8]
> ...
> ST lr, [sp, #nn]
> <function body>
> LD r0, [sp, #0]
> LD r1, [sp, #4]
> LD r2, [sp, #8]
> ...
> LD lr, [sp, #nn]
> ADDI sp, sp, #nn
> ADD pc, lr, 0
>
GLOBAL myfunction
ENTRY myfunction
myfunction:
ENTER R16,R0,sizeof( local_data )
< function body>
EXIT R16,R0,sizeof( local_data )
<
When used with stack frames R30 is manipulated in a controlled fashion,
SP is always manipulated. First it is used to push the registers on a stack
then it gets the constant subtracted allocating a stack frame.
<
When using the safe stack:: the registers get pushed on a stack this thread
has no access to (RWE = 000) and the registers store on that stack get
zeroed.
<
Code other than longjump() cannot even tell if safe stack is in use or not.
>
> STM/LDM is more complicated to implement (and a bit of a burden down the
> years), but it makes the programmer's life a lot easier and the compiler
> does use it.
>
> Theo

Re: Around the bike shed: Instruction names and assembler syntax

<svp1g3$1pbv$1@gal.iecc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23888&group=comp.arch#23888

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!not-for-mail
From: joh...@taugh.com (John Levine)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 3 Mar 2022 00:18:11 -0000 (UTC)
Organization: Taughannock Networks
Message-ID: <svp1g3$1pbv$1@gal.iecc.com>
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <svgqq7$cll$1@newsreader4.netcologne.de> <nLf*r48Hy@news.chiark.greenend.org.uk> <ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com>
Injection-Date: Thu, 3 Mar 2022 00:18:11 -0000 (UTC)
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970";
logging-data="58751"; mail-complaints-to="abuse@iecc.com"
In-Reply-To: <svcqrj$jj6$1@newsreader4.netcologne.de> <svgqq7$cll$1@newsreader4.netcologne.de> <nLf*r48Hy@news.chiark.greenend.org.uk> <ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com>
Cleverness: some
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: johnl@iecc.com (John Levine)
 by: John Levine - Thu, 3 Mar 2022 00:18 UTC

According to <aph@littlepinkcloud.invalid>:
>I also believe that if an instruction set is nice to program in
>assembly, it's also nice to write a code generator for. ...

Maybe. The VAX was designed to be stupendously uniform but
if you wanted to generate good code you needed to know
what was likely to be fast and what wasn't.

Compare that to the 801 where they took out all of the instructions
that the PL.8 compiler didn't generate. In later iterations they
put back a few things like load/store multiple that turned out to
be worth both putting in hardware and teaching the compiler about,
at least for procedure prolog and epilog.

--
Regards,
John Levine, johnl@taugh.com, Primary Perpetrator of "The Internet for Dummies",
Please consider the environment before reading this e-mail. https://jl.ly

Re: Around the bike shed: Instruction names and assembler syntax

<cc046dea-6bfe-4017-9d5a-a180a3a89976n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23889&group=comp.arch#23889

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:2981:b0:649:68a4:e4ea with SMTP id r1-20020a05620a298100b0064968a4e4eamr16975139qkp.462.1646269407239;
Wed, 02 Mar 2022 17:03:27 -0800 (PST)
X-Received: by 2002:a4a:8156:0:b0:31d:57dd:7c0f with SMTP id
p22-20020a4a8156000000b0031d57dd7c0fmr12482607oog.59.1646269406979; Wed, 02
Mar 2022 17:03:26 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 2 Mar 2022 17:03:26 -0800 (PST)
In-Reply-To: <svp1g3$1pbv$1@gal.iecc.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:446a:c769:120a:97bb;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:446a:c769:120a:97bb
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <svgqq7$cll$1@newsreader4.netcologne.de>
<nLf*r48Hy@news.chiark.greenend.org.uk> <ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com>
<svp1g3$1pbv$1@gal.iecc.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <cc046dea-6bfe-4017-9d5a-a180a3a89976n@googlegroups.com>
Subject: Re: Around the bike shed: Instruction names and assembler syntax
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Thu, 03 Mar 2022 01:03:27 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 28
 by: MitchAlsup - Thu, 3 Mar 2022 01:03 UTC

On Wednesday, March 2, 2022 at 6:18:15 PM UTC-6, John Levine wrote:
> According to <a...@littlepinkcloud.invalid>:
> >I also believe that if an instruction set is nice to program in
> >assembly, it's also nice to write a code generator for. ...
>
> Maybe. The VAX was designed to be stupendously uniform but
> if you wanted to generate good code you needed to know
> what was likely to be fast and what wasn't.
<
Most of the address modes added from 68010 to 68020 were
slower than performing the same in straight line code.
<
But the real surprise was that the VAX CALL/RET sequences
was so slow that some code got nearly a factor of 2× by converting
to BSR/JSR instead of using CALL.
>
> Compare that to the 801 where they took out all of the instructions
> that the PL.8 compiler didn't generate. In later iterations they
> put back a few things like load/store multiple that turned out to
> be worth both putting in hardware and teaching the compiler about,
> at least for procedure prolog and epilog.
>
>
>
> --
> Regards,
> John Levine, jo...@taugh.com, Primary Perpetrator of "The Internet for Dummies",
> Please consider the environment before reading this e-mail. https://jl.ly

Re: Around the bike shed: Instruction names and assembler syntax

<svprsc$buf$1@newsreader4.netcologne.de>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23895&group=comp.arch#23895

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2a0a-a540-c7b-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 3 Mar 2022 07:48:28 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <svprsc$buf$1@newsreader4.netcologne.de>
References: <svcqrj$jj6$1@newsreader4.netcologne.de>
<memo.20220226104336.7708a@jgd.cix.co.uk>
<svgqq7$cll$1@newsreader4.netcologne.de>
<nLf*r48Hy@news.chiark.greenend.org.uk>
<ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com>
<svodqv$rc$1@dont-email.me> <oLf*yP-Hy@news.chiark.greenend.org.uk>
Injection-Date: Thu, 3 Mar 2022 07:48:28 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2a0a-a540-c7b-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2a0a:a540:c7b:0:7285:c2ff:fe6c:992d";
logging-data="12239"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Thu, 3 Mar 2022 07:48 UTC

Theo <theom+news@chiark.greenend.org.uk> schrieb:
> Stephen Fuld <sfuld@alumni.cmu.edu.invalid> wrote:
>> On 3/2/2022 3:24 AM, aph@littlepinkcloud.invalid wrote:
>> > Theo Markettos <theom+news@chiark.greenend.org.uk> wrote:
>> >>
>> >> (32 bit ARM is interesting as it was designed to be nice to program
>> >> in assembly, a consideration not normally part of instruction set
>> >> design these days)
>> >
>> > That's an interesting point. In my experience 64-bit ARM is as nice to
>> > program in assembly, at least as far as the set of base instructions
>> > goes, even though there are more instructions.
>> >
>> > I also believe that if an instruction set is nice to program in
>> > assembly, it's also nice to write a code generator for.
>>
>> Wasn't one of the results from the studies of generated code,that was
>> used to justify RISC, that "nice to write assembly in" features such as
>> complex and orthogonal addressing modes just weren't used in generated code?
>
> Yes and no. For example, ARM32 has function prologues that look something
> like this:
>
> .myfunction
> STMFD sp!, {r0-r12,lr} ; save all the registers
><function body>
> LDMFD sp!, {r0-r12,pc} ; unstack and set pc<-old_lr
>
> whereas classic RISC would be something like:
>
> .myfunction
> ADDI sp, sp, #-nn ; make space on the stack
> ST r0, [sp, #0]

[...]

As written elsethread, both ARM and IBM deprecated multiple store
and load instructions - ARM by not including them in aarch64, IBM
by restricting them in POWER to 32-bit size and to big-endian only.
In other words, legacy code. POWER9 microcodes it, which incurs
a significant penalty. Mitch explained that it is less a burden
to his My 66000 implementations.

aarch64 has load and store double instead.

> STM/LDM is more complicated to implement (and a bit of a burden down the
> years), but it makes the programmer's life a lot easier and the compiler
> does use it.

It will use it for function prologue and epilogue, which is usually
generated after everything else in a function body is done.

Use in a function body is much harder (depending on what exactly
is in the ISA). If you can load/store regiters up to the maximum
register number that you have (POWER) or a register range (My
66000), you would have to work your whole register allocation
around the load/store multiple instruction. This would be
rather inconvenient, and I suspect that compilers would not use
it.

An instruction where you can load or store each register
individually would be easy to use, by comparison.

Re: Around the bike shed: Instruction names and assembler syntax

<svq7eh$int$1@newsreader4.netcologne.de>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23898&group=comp.arch#23898

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!news.freedyn.de!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2a0a-a540-c7b-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 3 Mar 2022 11:05:53 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <svq7eh$int$1@newsreader4.netcologne.de>
References: <svcqrj$jj6$1@newsreader4.netcologne.de>
<svd280$fiv$1@dont-email.me> <svh2tg$j53$1@gal.iecc.com>
<svj2ki$q0p$4@newsreader4.netcologne.de> <svjblm$idv$1@dont-email.me>
<j8666pFh0klU1@mid.individual.net> <svl27r$r8m$1@dont-email.me>
<2022Mar1.133629@mips.complang.tuwien.ac.at>
<svnjsl$qpu$1@newsreader4.netcologne.de>
<2022Mar2.184051@mips.complang.tuwien.ac.at> <svoejm$89e$1@dont-email.me>
Injection-Date: Thu, 3 Mar 2022 11:05:53 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2a0a-a540-c7b-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2a0a:a540:c7b:0:7285:c2ff:fe6c:992d";
logging-data="19197"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Thu, 3 Mar 2022 11:05 UTC

Ivan Godard <ivan@millcomputing.com> schrieb:
> On 3/2/2022 9:40 AM, Anton Ertl wrote:
>> Thomas Koenig <tkoenig@netcologne.de> writes:
>>> Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
>>>> Ivan Godard <ivan@millcomputing.com> writes:
>>>>> Declarable (!) precedence was a disaster
>>>>> in A68 - what's the precedence of left circular shift?
>>>>
>>>> IMO the general concept of precedence is a disaster. You can do
>>>> implicit parenthesizing between well-established pairs of operators
>>>> (e.g., a+b*c,
>>>
>>> You should.
>>>
>>> FORTRAN pretty much settled this question. Evaluating a formula
>>> in any other way is a desaster.
>>
>> What disaster would ensue from not accepting a+b*c and instead
>> requiring a+(b*c)? However, it seems to me that the relative
>> precedences of + and * and widely-enough known that accepting a+b*c
>> instead does not cause problems.
>
> Well, if we are going to match mathematic practice that should be
> "a+bc"; there have been historical efforts toward that sort of thing.

Restricting the user to single-letter variables would not be such
a great idea, I think.

An alternative could be to use the space for multiplication, but that
is also probably not such a good idea (and would not have worked
for the original fixed format in FORTRAN).

> However, claiming familiarity as justification suffices only so long as
> + and * mean addition and multiplication. In the presence of declarable
> operator overloading however...

Operator overloading does not always improve legibility.

>There are well established mathematical
> domains in which * is not associative and neither commute, yet those
> symbols are used.

In that case (for example matrix multiplication) it is probably
better to use functions.

[...]

Re: Around the bike shed: Instruction names and assembler syntax

<2022Mar3.120929@mips.complang.tuwien.ac.at>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23899&group=comp.arch#23899

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: ant...@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 03 Mar 2022 11:09:29 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 38
Message-ID: <2022Mar3.120929@mips.complang.tuwien.ac.at>
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <memo.20220226104336.7708a@jgd.cix.co.uk> <svgqq7$cll$1@newsreader4.netcologne.de> <nLf*r48Hy@news.chiark.greenend.org.uk> <ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com> <svodqv$rc$1@dont-email.me>
Injection-Info: reader02.eternal-september.org; posting-host="824c5f00426ed9c8d52ea49f8e7fd3a1";
logging-data="992"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+vwFlpmkcHPmF/p8cdtkTl"
Cancel-Lock: sha1:1BUdSiBei7tV72ETqxScJcFJ568=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Thu, 3 Mar 2022 11:09 UTC

Stephen Fuld <sfuld@alumni.cmu.edu.invalid> writes:
>Wasn't one of the results from the studies of generated code,that was
>used to justify RISC, that "nice to write assembly in" features such as
>complex and orthogonal addressing modes just weren't used in generated code?

There are multiple aspects to this:

* Compilers around 1980 may have had a hard time generating some of
these addressing modes, and that's why they did not generate them.
For other features like instructions with implicit registers, this
is mostly still true.

* These addressing modes may have been slow, and that's why compilers
did not generate them.

* The compiler may have been able to generate them, but the access
pattern represented by the addressing mode occurs rarely, so it
occurs rarely in generated code (yet implementing the addressing
mode incurs a cost).

The other aspect is what programmers consider "nice to write in
assembly". I think that there are psychological red herrings at work,
e.g., the feeling of achievement when the programmer has found a case
where he can change the access pattern such that the complex
addressing mode can be used and saves an instruction or two. Even if
the actual execution counts of such instructions are low, programmers
tend to create an emotional attachment to these features.

And I don't think it's just the orthogonal features that can profit
from this effect. However, I guess that the orthogonal features have
additional honeypot potential because they are theoretically more
widely useful than non-orthogonal features like the 8086s LODS
instruction.

- anton
--
'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

Re: Around the bike shed: Instruction names and assembler syntax

<lYOdnWGA3onVN73_nZ2dnUU7-RnNnZ2d@supernews.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23900&group=comp.arch#23900

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!border1.nntp.dca1.giganews.com!nntp.giganews.com!buffer1.nntp.dca1.giganews.com!nntp.supernews.com!news.supernews.com.POSTED!not-for-mail
NNTP-Posting-Date: Thu, 03 Mar 2022 05:45:12 -0600
Sender: Andrew Haley <aph@zarquon.pink>
From: aph...@littlepinkcloud.invalid
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Newsgroups: comp.arch
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <memo.20220226104336.7708a@jgd.cix.co.uk> <svgqq7$cll$1@newsreader4.netcologne.de> <nLf*r48Hy@news.chiark.greenend.org.uk> <ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com> <svodqv$rc$1@dont-email.me>
User-Agent: tin/1.9.2-20070201 ("Dalaruan") (UNIX) (Linux/4.18.0-305.25.1.el8_4.x86_64 (x86_64))
Message-ID: <lYOdnWGA3onVN73_nZ2dnUU7-RnNnZ2d@supernews.com>
Date: Thu, 03 Mar 2022 05:45:12 -0600
Lines: 31
X-Trace: sv3-10UxZLjCZept1JGKv0dtJVicI7nuwdUrKDE74ckNkMCaw93DO+gFqZOush/7Hso7r49m8mxA+s54R18!dKyjAJa1Jp+GUDu05SZxBUOAzRcna625F0J8LAcQyqukqdcfM2+tTU/UtEzaTLlXz7qDBFzaqqLa!PQA0oGaS
X-Complaints-To: www.supernews.com/docs/abuse.html
X-DMCA-Complaints-To: www.supernews.com/docs/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
X-Original-Bytes: 2665
 by: aph...@littlepinkcloud.invalid - Thu, 3 Mar 2022 11:45 UTC

Stephen Fuld <sfuld@alumni.cmu.edu.invalid> wrote:
> On 3/2/2022 3:24 AM, aph@littlepinkcloud.invalid wrote:
>> Theo Markettos <theom+news@chiark.greenend.org.uk> wrote:
>>>
>>> (32 bit ARM is interesting as it was designed to be nice to program
>>> in assembly, a consideration not normally part of instruction set
>>> design these days)
>>
>> That's an interesting point. In my experience 64-bit ARM is as nice to
>> program in assembly, at least as far as the set of base instructions
>> goes, even though there are more instructions.
>>
>> I also believe that if an instruction set is nice to program in
>> assembly, it's also nice to write a code generator for.
>
> Wasn't one of the results from the studies of generated code,that
> was used to justify RISC, that "nice to write assembly in" features
> such as complex and orthogonal addressing modes just weren't used in
> generated code?

Are complex addressing modes nice to write assembly in, though? I've
never found it to be so. I think the problem identified with IBM 370
was that many of the addressing modes weren't being used by compilers
or by hand-cranked code, but I can't find any data for that one way or
the other.

I can see the point of orthogonality, as long as it's not extended too
far. Of course no-one actually wants to have to use, say, a dedicated
pair of registers to do a multiply.

Andrew.

Re: Around the bike shed: Instruction names and assembler syntax

<2022Mar3.124057@mips.complang.tuwien.ac.at>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23901&group=comp.arch#23901

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: ant...@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 03 Mar 2022 11:40:57 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 61
Message-ID: <2022Mar3.124057@mips.complang.tuwien.ac.at>
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <svd280$fiv$1@dont-email.me> <svh2tg$j53$1@gal.iecc.com> <svj2ki$q0p$4@newsreader4.netcologne.de> <svjblm$idv$1@dont-email.me> <j8666pFh0klU1@mid.individual.net> <svl27r$r8m$1@dont-email.me> <2022Mar1.133629@mips.complang.tuwien.ac.at> <svnjsl$qpu$1@newsreader4.netcologne.de> <2022Mar2.184051@mips.complang.tuwien.ac.at> <svoejm$89e$1@dont-email.me>
Injection-Info: reader02.eternal-september.org; posting-host="824c5f00426ed9c8d52ea49f8e7fd3a1";
logging-data="10294"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18j0TsKpsM0clP/gZtL450j"
Cancel-Lock: sha1:2Nwcfqr6h9vTeVmq+cQC4vxvFCo=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Thu, 3 Mar 2022 11:40 UTC

Ivan Godard <ivan@millcomputing.com> writes:
>On 3/2/2022 9:40 AM, Anton Ertl wrote:
>> Thomas Koenig <tkoenig@netcologne.de> writes:
>>> FORTRAN pretty much settled this question. Evaluating a formula
>>> in any other way is a desaster.
>>
>> What disaster would ensue from not accepting a+b*c and instead
>> requiring a+(b*c)? However, it seems to me that the relative
>> precedences of + and * and widely-enough known that accepting a+b*c
>> instead does not cause problems.
>
>Well, if we are going to match mathematic practice that should be
>"a+bc"; there have been historical efforts toward that sort of thing.

This suffers from programmers using multi-character names (for good
reason), unlike mathematicians.

>However, claiming familiarity as justification suffices only so long as
>+ and * mean addition and multiplication. In the presence of declarable
>operator overloading however... There are well established mathematical
>domains in which * is not associative and neither commute, yet those
>symbols are used.

Associativity and commutativity don't play a role for the question of
whether a+b*c means (a+b)*c or a+(b*c). Whether the kind of
user-defined operator overloading on a syntax with fixed precedences
pioniered (or mainstreamed?) by C++ is a good idea is another
discussion. I don't have enough C++ experience to tell.

Lack of commutativity has not kept mathematicians from using the
established multiplication notation for matrix multiplication; and
programming languages seem to do ok with using + for string
concatenation.

Lack of associativity has not kept mathematicians and programming
languages from accepting "a-b-c", and I am not aware of problems with
that. Of course, one might wonder if it's a good idea to use a
normally associative operator like + for a non-associative operation
like FP addition, but that has a tradition going at least as far back
as Fortran (and one might justify it by saying that, like FP
approximates reals, FP addition approximates the addition of reals,
which is associative).

>Once out of arithmetic and into mathematics there really is no "natural"
>precedence. Still, your argument is sound because most computation is
>arithmetic and for common usage there are few operators.

My argument is actually that the normal case should be to require
explicit parentheses, and we can make a few exceptions to that rule
(but they should really be few).

>You ever used
>Iverson's APL?

No. A friend of mine uses APL occasionally, but I have only watched
him program it.

- anton
--
'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

Re: Around the bike shed: Instruction names and assembler syntax

<2022Mar3.130242@mips.complang.tuwien.ac.at>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23902&group=comp.arch#23902

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: ant...@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 03 Mar 2022 12:02:42 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 23
Message-ID: <2022Mar3.130242@mips.complang.tuwien.ac.at>
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <svd280$fiv$1@dont-email.me> <svh2tg$j53$1@gal.iecc.com> <svj2ki$q0p$4@newsreader4.netcologne.de> <svjblm$idv$1@dont-email.me> <j8666pFh0klU1@mid.individual.net> <svl27r$r8m$1@dont-email.me> <2022Mar1.133629@mips.complang.tuwien.ac.at> <svnjsl$qpu$1@newsreader4.netcologne.de> <2022Mar2.184051@mips.complang.tuwien.ac.at> <j89v7lF8t6eU1@mid.individual.net>
Injection-Info: reader02.eternal-september.org; posting-host="824c5f00426ed9c8d52ea49f8e7fd3a1";
logging-data="10294"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/lSDYoUIiwJU1Bb0Y4Q6gO"
Cancel-Lock: sha1:zz2a7Pn8QvLX6+uTBYJ3GUxDe9I=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Thu, 3 Mar 2022 12:02 UTC

Niklas Holsti <niklas.holsti@tidorum.invalid> writes:
>FWIW, Ada makes "a or b and c" illegal and requires parentheses.

Good.

>But Ada allows "not a and b"

Bad.

>with "not" having higher precedence than "and". I
>would recommend parentheses there, or writing it as "b and not a".

Accepting "b and not a" while not accepting "not a and b" would be the
way to go.

>"a + b and c" is legal Ada

Bad.

- anton
--
'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

Re: Around the bike shed: Instruction names and assembler syntax

<svqd08$m69$1@newsreader4.netcologne.de>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23904&group=comp.arch#23904

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!news.freedyn.de!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2a0a-a540-c7b-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 3 Mar 2022 12:40:40 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <svqd08$m69$1@newsreader4.netcologne.de>
References: <svcqrj$jj6$1@newsreader4.netcologne.de>
<svd280$fiv$1@dont-email.me> <svh2tg$j53$1@gal.iecc.com>
<svj2ki$q0p$4@newsreader4.netcologne.de> <svjblm$idv$1@dont-email.me>
<j8666pFh0klU1@mid.individual.net> <svl27r$r8m$1@dont-email.me>
<2022Mar1.133629@mips.complang.tuwien.ac.at>
<svnjsl$qpu$1@newsreader4.netcologne.de>
<2022Mar2.184051@mips.complang.tuwien.ac.at> <svon37$m2p$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 3 Mar 2022 12:40:40 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2a0a-a540-c7b-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2a0a:a540:c7b:0:7285:c2ff:fe6c:992d";
logging-data="22729"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Thu, 3 Mar 2022 12:40 UTC

Terje Mathisen <terje.mathisen@tmsw.no> schrieb:
> Anton Ertl wrote:

>> I have made productive use of treating the results of comparisons as
>> numbers or masks, so I think it's a feature.

I disagree there. I have no objection to a function that transforms
a logical variable to a numeric one (which would be elided by the
compiler, of course).

>> The misfeature in C is a
>> syntax that accepts "a+b&c".
>
> That should at the very least be a warning: Is the intention "(a+b) & c"
> or is it "a + (b & c)"?
>
> IntelliJ flags lots of constructs that are legal but potentially
> non-obvious to anyone reading the code.

So does gcc:

$ cat b.c
unsigned int
foo (unsigned int a, unsigned int b, unsigned int c)
{ return a + b & c;
} $ gcc -c -Wall b.c
b.c: In function ‘foo’:
b.c:4:12: warning: suggest parentheses around ‘+’ in operand of ‘&’ [-Wparentheses]
4 | return a + b & c;
|

(clang doesn't, but complains about a missing prototype with
-Weverything).

Re: Around the bike shed: Instruction names and assembler syntax

<svqd2i$s6d$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23905&group=comp.arch#23905

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 3 Mar 2022 04:41:55 -0800
Organization: A noiseless patient Spider
Lines: 31
Message-ID: <svqd2i$s6d$1@dont-email.me>
References: <svcqrj$jj6$1@newsreader4.netcologne.de>
<svd280$fiv$1@dont-email.me> <svh2tg$j53$1@gal.iecc.com>
<svj2ki$q0p$4@newsreader4.netcologne.de> <svjblm$idv$1@dont-email.me>
<j8666pFh0klU1@mid.individual.net> <svl27r$r8m$1@dont-email.me>
<2022Mar1.133629@mips.complang.tuwien.ac.at>
<svnjsl$qpu$1@newsreader4.netcologne.de>
<2022Mar2.184051@mips.complang.tuwien.ac.at> <svoejm$89e$1@dont-email.me>
<svq7eh$int$1@newsreader4.netcologne.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 3 Mar 2022 12:41:54 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="2cf4d6baf68fab47f7acfb860a9cbd57";
logging-data="28877"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+NJ+lDUB+KrY+FCqdHLnLB"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.6.1
Cancel-Lock: sha1:Tn6fU6LNNSSvr59GGdZ/QpZCfsI=
In-Reply-To: <svq7eh$int$1@newsreader4.netcologne.de>
Content-Language: en-US
 by: Ivan Godard - Thu, 3 Mar 2022 12:41 UTC

On 3/3/2022 3:05 AM, Thomas Koenig wrote:
> Ivan Godard <ivan@millcomputing.com> schrieb:
>> On 3/2/2022 9:40 AM, Anton Ertl wrote:
>>> Thomas Koenig <tkoenig@netcologne.de> writes:
>>>> Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
>>>>> Ivan Godard <ivan@millcomputing.com> writes:
>>>>>> Declarable (!) precedence was a disaster
>>>>>> in A68 - what's the precedence of left circular shift?
>>>>>
>>>>> IMO the general concept of precedence is a disaster. You can do
>>>>> implicit parenthesizing between well-established pairs of operators
>>>>> (e.g., a+b*c,
>>>>
>>>> You should.
>>>>
>>>> FORTRAN pretty much settled this question. Evaluating a formula
>>>> in any other way is a desaster.
>>>
>>> What disaster would ensue from not accepting a+b*c and instead
>>> requiring a+(b*c)? However, it seems to me that the relative
>>> precedences of + and * and widely-enough known that accepting a+b*c
>>> instead does not cause problems.
>>
>> Well, if we are going to match mathematic practice that should be
>> "a+bc"; there have been historical efforts toward that sort of thing.
>
> Restricting the user to single-letter variables would not be such
> a great idea, I think.

Was highly successful in the original BASIC.

Re: Around the bike shed: Instruction names and assembler syntax

<2022Mar3.130732@mips.complang.tuwien.ac.at>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23906&group=comp.arch#23906

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: ant...@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 03 Mar 2022 12:07:32 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 48
Distribution: world
Message-ID: <2022Mar3.130732@mips.complang.tuwien.ac.at>
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <memo.20220226104336.7708a@jgd.cix.co.uk> <svgqq7$cll$1@newsreader4.netcologne.de> <nLf*r48Hy@news.chiark.greenend.org.uk> <ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com> <svodqv$rc$1@dont-email.me> <oLf*yP-Hy@news.chiark.greenend.org.uk> <svprsc$buf$1@newsreader4.netcologne.de>
Injection-Info: reader02.eternal-september.org; posting-host="824c5f00426ed9c8d52ea49f8e7fd3a1";
logging-data="30856"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+DPOF6gRQ40UrwM5Yk/LLQ"
Cancel-Lock: sha1:Z+KvkJ12die2ZWd6KojdzV5FkcQ=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Thu, 3 Mar 2022 12:07 UTC

Thomas Koenig <tkoenig@netcologne.de> writes:
>As written elsethread, both ARM and IBM deprecated multiple store
>and load instructions - ARM by not including them in aarch64, IBM
>by restricting them in POWER to 32-bit size and to big-endian only.
>In other words, legacy code. POWER9 microcodes it, which incurs
>a significant penalty. Mitch explained that it is less a burden
>to his My 66000 implementations.
>
>aarch64 has load and store double instead.
....
>Use in a function body is much harder (depending on what exactly
>is in the ISA). If you can load/store regiters up to the maximum
>register number that you have (POWER) or a register range (My
>66000), you would have to work your whole register allocation
>around the load/store multiple instruction. This would be
>rather inconvenient, and I suspect that compilers would not use
>it.

I have certainly seen quite a few load-pair and store-pair
instructions in gcc-generated Aarch64 code outside function
prologue/epilogue:

In the 6008 lines of output from "objdump -d
engine/engine-fast-ll-reg.o" (pretty much a single large function),
ldp occurs 133 times (among them 24 accesses through sp) and stp
occurs 76 times (17 accesses through sp). The accesses through sp are
probably around function calls, the others are other pairwise accesses
that the compiler could combine.

So I expect that efficient load-multiple or store-multiple
instructions would also be used by gcc; the question is how often
there would be cases with more than two registers. Apparently not
enough to make the Aarch64 architects add instructions for that.

The benefit of the load-pair and store-pair instructions over a pair
of loads/stores is that they reduce load/store-unit contention; of
course, the RISC-V answer to that is that the decoder can combine such
a pair into one pairwise micro-instruction.

>An instruction where you can load or store each register
>individually would be easy to use, by comparison.

Do you mean something other than a normal load or store instruction?

- anton
--
'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

Re: Around the bike shed: Instruction names and assembler syntax

<svqdbt$g9$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23907&group=comp.arch#23907

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 3 Mar 2022 04:46:52 -0800
Organization: A noiseless patient Spider
Lines: 11
Message-ID: <svqdbt$g9$1@dont-email.me>
References: <svcqrj$jj6$1@newsreader4.netcologne.de>
<svd280$fiv$1@dont-email.me> <svh2tg$j53$1@gal.iecc.com>
<svj2ki$q0p$4@newsreader4.netcologne.de> <svjblm$idv$1@dont-email.me>
<j8666pFh0klU1@mid.individual.net> <svl27r$r8m$1@dont-email.me>
<2022Mar1.133629@mips.complang.tuwien.ac.at>
<svnjsl$qpu$1@newsreader4.netcologne.de>
<2022Mar2.184051@mips.complang.tuwien.ac.at> <svoejm$89e$1@dont-email.me>
<2022Mar3.124057@mips.complang.tuwien.ac.at>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 3 Mar 2022 12:46:54 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="2cf4d6baf68fab47f7acfb860a9cbd57";
logging-data="521"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+FhxGbVDMZX3t71HDddqE4"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.6.1
Cancel-Lock: sha1:X7VrU2q/y9j/81mzdeYe4aoQELY=
In-Reply-To: <2022Mar3.124057@mips.complang.tuwien.ac.at>
Content-Language: en-US
 by: Ivan Godard - Thu, 3 Mar 2022 12:46 UTC

On 3/3/2022 3:40 AM, Anton Ertl wrote:
<snip>

> My argument is actually that the normal case should be to require
> explicit parentheses, and we can make a few exceptions to that rule
> (but they should really be few).

But (as noted by several commenters here) that leads to informal
parenthesizing everything in the name of readability and safety. But if
that's the result, why not dump all precedence entirely?

Re: Around the bike shed: Instruction names and assembler syntax

<svqdka$2jn$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23908&group=comp.arch#23908

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 3 Mar 2022 04:51:21 -0800
Organization: A noiseless patient Spider
Lines: 26
Message-ID: <svqdka$2jn$1@dont-email.me>
References: <svcqrj$jj6$1@newsreader4.netcologne.de>
<svd280$fiv$1@dont-email.me> <svh2tg$j53$1@gal.iecc.com>
<svj2ki$q0p$4@newsreader4.netcologne.de> <svjblm$idv$1@dont-email.me>
<j8666pFh0klU1@mid.individual.net> <svl27r$r8m$1@dont-email.me>
<2022Mar1.133629@mips.complang.tuwien.ac.at>
<svnjsl$qpu$1@newsreader4.netcologne.de>
<2022Mar2.184051@mips.complang.tuwien.ac.at>
<j89v7lF8t6eU1@mid.individual.net>
<2022Mar3.130242@mips.complang.tuwien.ac.at>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 3 Mar 2022 12:51:22 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="2cf4d6baf68fab47f7acfb860a9cbd57";
logging-data="2679"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19FzFBpyRE8ujELai55JmN0"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.6.1
Cancel-Lock: sha1:tkREU8RLADhd5C33H+frUQ4vHTc=
In-Reply-To: <2022Mar3.130242@mips.complang.tuwien.ac.at>
Content-Language: en-US
 by: Ivan Godard - Thu, 3 Mar 2022 12:51 UTC

On 3/3/2022 4:02 AM, Anton Ertl wrote:
> Niklas Holsti <niklas.holsti@tidorum.invalid> writes:
>> FWIW, Ada makes "a or b and c" illegal and requires parentheses.
>
> Good.
>
>> But Ada allows "not a and b"
>
> Bad.
>
>> with "not" having higher precedence than "and". I
>> would recommend parentheses there, or writing it as "b and not a".
>
> Accepting "b and not a" while not accepting "not a and b" would be the
> way to go.
>
>> "a + b and c" is legal Ada
>
> Bad.

Mary:
a not and b => (not a) and b
a and b not => not (a and b)
a and (b not) => a and (not b)

strict left-to-right order; monadic operators in suffix form.

Re: Around the bike shed: Instruction names and assembler syntax

<svqe93$1m4j$1@gioia.aioe.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23909&group=comp.arch#23909

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!UXtAIYUgaw/fkqnS/V28xg.user.46.165.242.91.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 3 Mar 2022 14:02:27 +0100
Organization: Aioe.org NNTP Server
Message-ID: <svqe93$1m4j$1@gioia.aioe.org>
References: <svcqrj$jj6$1@newsreader4.netcologne.de>
<memo.20220226104336.7708a@jgd.cix.co.uk>
<svgqq7$cll$1@newsreader4.netcologne.de>
<nLf*r48Hy@news.chiark.greenend.org.uk>
<ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com> <svodqv$rc$1@dont-email.me>
<2022Mar3.120929@mips.complang.tuwien.ac.at>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Info: gioia.aioe.org; logging-data="55443"; posting-host="UXtAIYUgaw/fkqnS/V28xg.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0 SeaMonkey/2.53.10.2
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Thu, 3 Mar 2022 13:02 UTC

Anton Ertl wrote:
> And I don't think it's just the orthogonal features that can profit
> from this effect. However, I guess that the orthogonal features have
> additional honeypot potential because they are theoretically more
> widely useful than non-orthogonal features like the 8086s LODS
> instruction.

Those original string ops on the 8088 were absolutely crucial, simply
because they allowed us to write extremely compact code.

On a CPU where all bytes read or stored (including instruction bytes
which usually would dominate) would take 4 cycles, using those
single-byte opcodes with auto-increment/decrement was the difference
between "too slow" and "usable".

Terje

--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Re: Around the bike shed: Instruction names and assembler syntax

<2022Mar3.140741@mips.complang.tuwien.ac.at>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23910&group=comp.arch#23910

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: ant...@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 03 Mar 2022 13:07:41 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 20
Message-ID: <2022Mar3.140741@mips.complang.tuwien.ac.at>
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <svd280$fiv$1@dont-email.me> <svh2tg$j53$1@gal.iecc.com> <svj2ki$q0p$4@newsreader4.netcologne.de> <svjblm$idv$1@dont-email.me> <j8666pFh0klU1@mid.individual.net> <svl27r$r8m$1@dont-email.me> <2022Mar1.133629@mips.complang.tuwien.ac.at> <svnjsl$qpu$1@newsreader4.netcologne.de> <2022Mar2.184051@mips.complang.tuwien.ac.at> <svoejm$89e$1@dont-email.me> <2022Mar3.124057@mips.complang.tuwien.ac.at> <svqdbt$g9$1@dont-email.me>
Injection-Info: reader02.eternal-september.org; posting-host="824c5f00426ed9c8d52ea49f8e7fd3a1";
logging-data="676"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+pi2TZK4ydMFlfnanTzz5i"
Cancel-Lock: sha1:WKy4OMrcCVpeCzWaJrGUvzIjwuw=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Thu, 3 Mar 2022 13:07 UTC

Ivan Godard <ivan@millcomputing.com> writes:
>On 3/3/2022 3:40 AM, Anton Ertl wrote:
><snip>
>
>> My argument is actually that the normal case should be to require
>> explicit parentheses, and we can make a few exceptions to that rule
>> (but they should really be few).
>
>But (as noted by several commenters here) that leads to informal
>parenthesizing everything in the name of readability and safety.

I have no idea what "informal parenthesizing" is supposed to mean. If
you mean that nobody writes "a+b*c", I think you are wrong. But of
course, having zero exceptions to the rule of requiring explicit
parentheses is fine with me.

- anton
--
'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

Re: Around the bike shed: Instruction names and assembler syntax

<Uy4UJ.91086$Lbb6.86739@fx45.iad>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23911&group=comp.arch#23911

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!peer02.ams4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!fx45.iad.POSTED!not-for-mail
From: ThatWoul...@thevillage.com (EricP)
User-Agent: Thunderbird 2.0.0.24 (Windows/20100228)
MIME-Version: 1.0
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <memo.20220226104336.7708a@jgd.cix.co.uk> <svgqq7$cll$1@newsreader4.netcologne.de> <nLf*r48Hy@news.chiark.greenend.org.uk> <ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com> <svodqv$rc$1@dont-email.me> <oLf*yP-Hy@news.chiark.greenend.org.uk> <svprsc$buf$1@newsreader4.netcologne.de> <2022Mar3.130732@mips.complang.tuwien.ac.at>
In-Reply-To: <2022Mar3.130732@mips.complang.tuwien.ac.at>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 61
Message-ID: <Uy4UJ.91086$Lbb6.86739@fx45.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Thu, 03 Mar 2022 14:48:20 UTC
Date: Thu, 03 Mar 2022 09:47:45 -0500
X-Received-Bytes: 4043
 by: EricP - Thu, 3 Mar 2022 14:47 UTC

Anton Ertl wrote:
> Thomas Koenig <tkoenig@netcologne.de> writes:
>> As written elsethread, both ARM and IBM deprecated multiple store
>> and load instructions - ARM by not including them in aarch64, IBM
>> by restricting them in POWER to 32-bit size and to big-endian only.
>> In other words, legacy code. POWER9 microcodes it, which incurs
>> a significant penalty. Mitch explained that it is less a burden
>> to his My 66000 implementations.
>>
>> aarch64 has load and store double instead.
> ....
>> Use in a function body is much harder (depending on what exactly
>> is in the ISA). If you can load/store regiters up to the maximum
>> register number that you have (POWER) or a register range (My
>> 66000), you would have to work your whole register allocation
>> around the load/store multiple instruction. This would be
>> rather inconvenient, and I suspect that compilers would not use
>> it.
>
> I have certainly seen quite a few load-pair and store-pair
> instructions in gcc-generated Aarch64 code outside function
> prologue/epilogue:
>
> In the 6008 lines of output from "objdump -d
> engine/engine-fast-ll-reg.o" (pretty much a single large function),
> ldp occurs 133 times (among them 24 accesses through sp) and stp
> occurs 76 times (17 accesses through sp). The accesses through sp are
> probably around function calls, the others are other pairwise accesses
> that the compiler could combine.
>
> So I expect that efficient load-multiple or store-multiple
> instructions would also be used by gcc; the question is how often
> there would be cases with more than two registers. Apparently not
> enough to make the Aarch64 architects add instructions for that.
>
> The benefit of the load-pair and store-pair instructions over a pair
> of loads/stores is that they reduce load/store-unit contention; of
> course, the RISC-V answer to that is that the decoder can combine such
> a pair into one pairwise micro-instruction.

The register save set size sets the minimum width of a number of resources,
the number of register read and write ports,
width that LSQ should handle including store-load forwarding.
With LDP/STP 2*64 it should not be a hardship even for a minimal
implementation.

For LDM/STM to run at full speed it would need to operate on a
full 64B cache line, 8 register wide datapath to/from memory. That's
- 8 read ports on the rename tables
- 8 read and 8 write register file ports
- 8 operand buses to LSQ, store-load forwarding,
(possibly also internally forwarding withing the LSQ itself)
and input operand forwarding from FU results
- 8 result buses from LSQ, with output forwarding
(plus possibly internal forwarding withing the LSQ itself)
- 512 bit datapath to/from cache with alignment shifters for line straddles.

and it would still need some kind of microcode sequencer for
when there was more than 8 save/restore registers in a set.

Re: Around the bike shed: Instruction names and assembler syntax

<svql9n$u96$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23912&group=comp.arch#23912

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 3 Mar 2022 07:02:15 -0800
Organization: A noiseless patient Spider
Lines: 21
Message-ID: <svql9n$u96$1@dont-email.me>
References: <svcqrj$jj6$1@newsreader4.netcologne.de>
<svd280$fiv$1@dont-email.me> <svh2tg$j53$1@gal.iecc.com>
<svj2ki$q0p$4@newsreader4.netcologne.de> <svjblm$idv$1@dont-email.me>
<j8666pFh0klU1@mid.individual.net> <svl27r$r8m$1@dont-email.me>
<2022Mar1.133629@mips.complang.tuwien.ac.at>
<svnjsl$qpu$1@newsreader4.netcologne.de>
<2022Mar2.184051@mips.complang.tuwien.ac.at> <svoejm$89e$1@dont-email.me>
<2022Mar3.124057@mips.complang.tuwien.ac.at> <svqdbt$g9$1@dont-email.me>
<2022Mar3.140741@mips.complang.tuwien.ac.at>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 3 Mar 2022 15:02:15 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="2cf4d6baf68fab47f7acfb860a9cbd57";
logging-data="31014"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+e6AH0EfcTCdO+21BrR949"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.6.1
Cancel-Lock: sha1:8vw+LvyCfb+430BfyG6q5jrwpr8=
In-Reply-To: <2022Mar3.140741@mips.complang.tuwien.ac.at>
Content-Language: en-US
 by: Ivan Godard - Thu, 3 Mar 2022 15:02 UTC

On 3/3/2022 5:07 AM, Anton Ertl wrote:
> Ivan Godard <ivan@millcomputing.com> writes:
>> On 3/3/2022 3:40 AM, Anton Ertl wrote:
>> <snip>
>>
>>> My argument is actually that the normal case should be to require
>>> explicit parentheses, and we can make a few exceptions to that rule
>>> (but they should really be few).
>>
>> But (as noted by several commenters here) that leads to informal
>> parenthesizing everything in the name of readability and safety.
>
> I have no idea what "informal parenthesizing" is supposed to mean. If
> you mean that nobody writes "a+b*c", I think you are wrong. But of
> course, having zero exceptions to the rule of requiring explicit
> parentheses is fine with me.
>
> - anton

"informal parenthesizing": syntactic rules required by convention but
not by formal syntax.

Re: Around the bike shed: Instruction names and assembler syntax

<2022Mar3.153038@mips.complang.tuwien.ac.at>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23913&group=comp.arch#23913

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: ant...@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 03 Mar 2022 14:30:38 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 48
Message-ID: <2022Mar3.153038@mips.complang.tuwien.ac.at>
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <memo.20220226104336.7708a@jgd.cix.co.uk> <svgqq7$cll$1@newsreader4.netcologne.de> <nLf*r48Hy@news.chiark.greenend.org.uk> <ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com> <svodqv$rc$1@dont-email.me> <2022Mar3.120929@mips.complang.tuwien.ac.at> <svqe93$1m4j$1@gioia.aioe.org>
Injection-Info: reader02.eternal-september.org; posting-host="824c5f00426ed9c8d52ea49f8e7fd3a1";
logging-data="5402"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+7f4+zmKD0PI9X/+9gwOwX"
Cancel-Lock: sha1:2FNCxNEoeeonFWbQ3mF2pJ8id1M=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Thu, 3 Mar 2022 14:30 UTC

Terje Mathisen <terje.mathisen@tmsw.no> writes:
>Anton Ertl wrote:
>> And I don't think it's just the orthogonal features that can profit
>> from this effect. However, I guess that the orthogonal features have
>> additional honeypot potential because they are theoretically more
>> widely useful than non-orthogonal features like the 8086s LODS
>> instruction.
>
>Those original string ops on the 8088 were absolutely crucial, simply
>because they allowed us to write extremely compact code.
>
>On a CPU where all bytes read or stored (including instruction bytes
>which usually would dominate) would take 4 cycles, using those
>single-byte opcodes with auto-increment/decrement was the difference
>between "too slow" and "usable".

I am wondering if this is a demonstration of the feeling of
achievement that creates an attachment to these features.

What was the proportion of these instructions in production code,
statically and dynamically?

Looking at an example, here's a table of implementations of NEXT
(virtual machine instruction dispatch) in various assembly languages:

PDP-11 6809 8086 8086'
next: mov (ip)+,w ldx ,y++ lods lods ax
mov bx,ax mov bx,ax
next1: jmp @(w)+ jmp [,x] mov dx,bx jmp word ptr[bx]
inc dx
jmp word ptr[bx]

IP and W are aliases for PDP-11 registers; IP/Y/SI is the virtual
machine instruction pointer.

8086 is what's in the table (originally from the fig-Forth listing,
like the PDP-11 and the 6809 variants), 8086' is a cleaned-up version
that does not pull stuff up from some of the possible jump targets.

So we see here that the implicit registers of lods combined with the
limitations of usable registers in the jmp conspire to require an
additional mov instruction. Not sure if this really saves code size
compared to the 6809 or PDP-11.

- anton
--
'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

Re: Around the bike shed: Instruction names and assembler syntax

<svqpcu$umt$1@newsreader4.netcologne.de>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23914&group=comp.arch#23914

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2a0a-a540-c7b-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Re: Around the bike shed: Instruction names and assembler syntax
Date: Thu, 3 Mar 2022 16:12:14 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <svqpcu$umt$1@newsreader4.netcologne.de>
References: <svcqrj$jj6$1@newsreader4.netcologne.de>
<memo.20220226104336.7708a@jgd.cix.co.uk>
<svgqq7$cll$1@newsreader4.netcologne.de>
<nLf*r48Hy@news.chiark.greenend.org.uk>
<ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com>
<svodqv$rc$1@dont-email.me> <oLf*yP-Hy@news.chiark.greenend.org.uk>
<svprsc$buf$1@newsreader4.netcologne.de>
<2022Mar3.130732@mips.complang.tuwien.ac.at>
Injection-Date: Thu, 3 Mar 2022 16:12:14 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2a0a-a540-c7b-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2a0a:a540:c7b:0:7285:c2ff:fe6c:992d";
logging-data="31453"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Thu, 3 Mar 2022 16:12 UTC

Anton Ertl <anton@mips.complang.tuwien.ac.at> schrieb:
> Thomas Koenig <tkoenig@netcologne.de> writes:

>>An instruction where you can load or store each register
>>individually would be easy to use, by comparison.
>
> Do you mean something other than a normal load or store instruction?

What I mean is is a single instruction which optionally loads
or stores every register there is.

Hmm... looking at ARM, it seems that this is indeed more
or less implemented with LDM and STM - they have a 16-bit
mask which specifies which registers to transfer, and 32-bit
ARM has only 16 registers, so that fits.

The same could be done with more registers, but it is (obiously)
not possible to do with 32 registers for an ISA with 32 bit
instructions.

Compilers should have no problem using it, though.

Re: Around the bike shed: Instruction names and assembler syntax

<19bfcb02-9f22-4956-bc51-67fe4be6c05an@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23917&group=comp.arch#23917

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ad4:5ba7:0:b0:432:7641:eda7 with SMTP id 7-20020ad45ba7000000b004327641eda7mr24991726qvq.61.1646326541059;
Thu, 03 Mar 2022 08:55:41 -0800 (PST)
X-Received: by 2002:a05:6870:f113:b0:d7:d59b:7b47 with SMTP id
k19-20020a056870f11300b000d7d59b7b47mr4693862oac.99.1646326540559; Thu, 03
Mar 2022 08:55:40 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Thu, 3 Mar 2022 08:55:40 -0800 (PST)
In-Reply-To: <svprsc$buf$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:3de0:ba8f:3b3:e7eb;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:3de0:ba8f:3b3:e7eb
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <memo.20220226104336.7708a@jgd.cix.co.uk>
<svgqq7$cll$1@newsreader4.netcologne.de> <nLf*r48Hy@news.chiark.greenend.org.uk>
<ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com> <svodqv$rc$1@dont-email.me>
<oLf*yP-Hy@news.chiark.greenend.org.uk> <svprsc$buf$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <19bfcb02-9f22-4956-bc51-67fe4be6c05an@googlegroups.com>
Subject: Re: Around the bike shed: Instruction names and assembler syntax
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Thu, 03 Mar 2022 16:55:41 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 65
 by: MitchAlsup - Thu, 3 Mar 2022 16:55 UTC

On Thursday, March 3, 2022 at 1:48:32 AM UTC-6, Thomas Koenig wrote:
> Theo <theom...@chiark.greenend.org.uk> schrieb:
> > Stephen Fuld <sf...@alumni.cmu.edu.invalid> wrote:
> >> On 3/2/2022 3:24 AM, a...@littlepinkcloud.invalid wrote:
> >> > Theo Markettos <theom...@chiark.greenend.org.uk> wrote:
> >> >>
> >> >> (32 bit ARM is interesting as it was designed to be nice to program
> >> >> in assembly, a consideration not normally part of instruction set
> >> >> design these days)
> >> >
> >> > That's an interesting point. In my experience 64-bit ARM is as nice to
> >> > program in assembly, at least as far as the set of base instructions
> >> > goes, even though there are more instructions.
> >> >
> >> > I also believe that if an instruction set is nice to program in
> >> > assembly, it's also nice to write a code generator for.
> >>
> >> Wasn't one of the results from the studies of generated code,that was
> >> used to justify RISC, that "nice to write assembly in" features such as
> >> complex and orthogonal addressing modes just weren't used in generated code?
> >
> > Yes and no. For example, ARM32 has function prologues that look something
> > like this:
> >
> > .myfunction
> > STMFD sp!, {r0-r12,lr} ; save all the registers
> ><function body>
> > LDMFD sp!, {r0-r12,pc} ; unstack and set pc<-old_lr
> >
> > whereas classic RISC would be something like:
> >
> > .myfunction
> > ADDI sp, sp, #-nn ; make space on the stack
> > ST r0, [sp, #0]
> [...]
>
> As written elsethread, both ARM and IBM deprecated multiple store
> and load instructions - ARM by not including them in aarch64, IBM
> by restricting them in POWER to 32-bit size and to big-endian only.
> In other words, legacy code. POWER9 microcodes it, which incurs
> a significant penalty. Mitch explained that it is less a burden
> to his My 66000 implementations.
>
> aarch64 has load and store double instead.
> > STM/LDM is more complicated to implement (and a bit of a burden down the
> > years), but it makes the programmer's life a lot easier and the compiler
> > does use it.
> It will use it for function prologue and epilogue, which is usually
> generated after everything else in a function body is done.
>
> Use in a function body is much harder (depending on what exactly
> is in the ISA). If you can load/store regiters up to the maximum
> register number that you have (POWER) or a register range (My
> 66000), you would have to work your whole register allocation
> around the load/store multiple instruction. This would be
> rather inconvenient, and I suspect that compilers would not use
> it.
<
I developed ABI first than figured out how to make an instruction do
everything ABI required, including putting all the arguments together
(passed in registers and passed in memory) to simplify varargs.
>
> An instruction where you can load or store each register
> individually would be easy to use, by comparison.
<
Then you get into VAX terribilisms.

Re: Around the bike shed: Instruction names and assembler syntax

<1c9f8d6a-e8ac-41f5-adf7-f3fd369904a7n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=23918&group=comp.arch#23918

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:6214:1d0d:b0:433:1869:1fb7 with SMTP id e13-20020a0562141d0d00b0043318691fb7mr14727937qvd.40.1646326695796;
Thu, 03 Mar 2022 08:58:15 -0800 (PST)
X-Received: by 2002:a05:6870:42d2:b0:d9:c992:9e63 with SMTP id
z18-20020a05687042d200b000d9c9929e63mr49287oah.175.1646326695567; Thu, 03 Mar
2022 08:58:15 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Thu, 3 Mar 2022 08:58:15 -0800 (PST)
In-Reply-To: <lYOdnWGA3onVN73_nZ2dnUU7-RnNnZ2d@supernews.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:3de0:ba8f:3b3:e7eb;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:3de0:ba8f:3b3:e7eb
References: <svcqrj$jj6$1@newsreader4.netcologne.de> <memo.20220226104336.7708a@jgd.cix.co.uk>
<svgqq7$cll$1@newsreader4.netcologne.de> <nLf*r48Hy@news.chiark.greenend.org.uk>
<ANidnT3Kb-ZszoL_nZ2dnUU7-LHNnZ2d@supernews.com> <svodqv$rc$1@dont-email.me> <lYOdnWGA3onVN73_nZ2dnUU7-RnNnZ2d@supernews.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <1c9f8d6a-e8ac-41f5-adf7-f3fd369904a7n@googlegroups.com>
Subject: Re: Around the bike shed: Instruction names and assembler syntax
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Thu, 03 Mar 2022 16:58:15 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 38
 by: MitchAlsup - Thu, 3 Mar 2022 16:58 UTC

On Thursday, March 3, 2022 at 5:45:20 AM UTC-6, a...@littlepinkcloud.invalid wrote:
> Stephen Fuld <sf...@alumni.cmu.edu.invalid> wrote:
> > On 3/2/2022 3:24 AM, a...@littlepinkcloud.invalid wrote:
> >> Theo Markettos <theom...@chiark.greenend.org.uk> wrote:
> >>>
> >>> (32 bit ARM is interesting as it was designed to be nice to program
> >>> in assembly, a consideration not normally part of instruction set
> >>> design these days)
> >>
> >> That's an interesting point. In my experience 64-bit ARM is as nice to
> >> program in assembly, at least as far as the set of base instructions
> >> goes, even though there are more instructions.
> >>
> >> I also believe that if an instruction set is nice to program in
> >> assembly, it's also nice to write a code generator for.
> >
> > Wasn't one of the results from the studies of generated code,that
> > was used to justify RISC, that "nice to write assembly in" features
> > such as complex and orthogonal addressing modes just weren't used in
> > generated code?
<
> Are complex addressing modes nice to write assembly in, though? I've
> never found it to be so. I think the problem identified with IBM 370
> was that many of the addressing modes weren't being used by compilers
> or by hand-cranked code, but I can't find any data for that one way or
> the other.
<
Brian had little trouble using:
MEM Rd,[Rbase+Rindex<<size+Displacement]
as the model.
With the additions of:
Rbase = R0 substitutes IP as base register
Rindex = R0 substituted 0x0 as the index
>
> I can see the point of orthogonality, as long as it's not extended too
> far. Of course no-one actually wants to have to use, say, a dedicated
> pair of registers to do a multiply.
>
> Andrew.

Pages:12345678910
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor