Equate for conditions

2010-12-20 Thread Martin Trübner
I am about to write some code using compare and trap/branch as well as store/load on condition. Is there a convention/macro/copy_structure that I can use? What I like to write is this (assuming COND_E is the condition equal): CIT R15,(L'STRUC/4),COND_E Or am I in the wrong book and there

Re: Equate for conditions

2010-12-20 Thread Mark Boonie
Yes, there are extended suffixes for COMPARE AND BRANCH and COMPARE AND TRAP. The defined suffixes are -H, -L, -E, -NH, -NL, and -NE. - mb Mark Boonie z/TPF Development Martin Trübner wrote on 12/20/2010 05:57:18 AM: ... Or am I in the wrong book and there are extended mnemonics for CIT

Re: Baseless vs Based

2010-12-20 Thread Bodoh John Robert
Ed, Martin, John, Tony, et al, What I am doing is creating macros that are used by any other application. I was hoping to avoid having the user of these macros have to specify the technique needed to address symbols. That sounds clutzy and it nowhere else in the assembler do I have to tell

Re: Baseless vs Based

2010-12-20 Thread Steve Comstock
On 12/20/2010 7:05 AM, Bodoh John Robert wrote: Ed, Martin, John, Tony, et al, What I am doing is creating macros that are used by any other application. I was hoping to avoid having the user of these macros have to specify the technique needed to address symbols. That sounds clutzy and it

Re: Equate for conditions

2010-12-20 Thread Martin Trübner
Mark, Thank you - works -- Martin Pi_cap_CPU - all you ever need around MWLC/SCRT/CMT in z/VSE more at http://www.picapcpu.de

Re: Baseless vs Based

2010-12-20 Thread Bodoh John Robert
Martin, As I understand LARL, the current PSW is used as the base to address the symbol. If the symbol is in a DSECT, the LARL instruction should generate an assembler error. John -Original Message- From: IBM Mainframe Assembler List [mailto:assembler-l...@listserv.uga.edu] On

Re: Baseless vs Based

2010-12-20 Thread Martin Trübner
John, it is Steve not me- and Steve tries to understand something in Eds posting (he is making stmts for a synthetical situation to find out what Ed means- he is certainly aware of the features/restrcitions of the various instructions) never mind -- Martin

Re: Baseless vs Based

2010-12-20 Thread Paul Gilmartin
On Dec 20, 2010, at 07:05, Bodoh John Robert wrote: Ed, Martin, John, Tony, et al, What I am doing is creating macros that are used by any other application. I was hoping to avoid having the user of these macros have to specify the technique needed to address symbols. That sounds clutzy

Re: Baseless vs Based

2010-12-20 Thread Binyamin Dissen
On Mon, 20 Dec 2010 10:28:21 -0500 Bodoh John Robert john.robert.bo...@irs.gov wrote: :Some of my macros generate a CALL or LINK to a subroutine and pass a parameter list consisting, in part, of the address of storage locations specified through arguments on the macro. In generating the

Re: prize for a good replacement for baseless

2010-12-20 Thread McNeill,Cliff
How about un-registered computing? Kind of like off-the-grid, but not exactly... -Original Message- From: IBM Mainframe Assembler List [mailto:assembler-l...@listserv.uga.edu] On Behalf Of john gilmore Sent: Saturday, December 18, 2010 12:32 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU

Re: Baseless vs Based

2010-12-20 Thread David Bond
My advice is to do what most assembler programmers and most compilers do. Use base registers for data and relative addressing for instructions. Since most data access instructions require a base register, most data areas will have a base register and USING established before a macro is invoked.

Re: Baseless vs Based

2010-12-20 Thread Paul Gilmartin
On Dec 20, 2010, at 08:49, Bodoh John Robert wrote: What about lookahead? Does that not set attributes based on the characteristics of symbols not already defined? Why not an attribute that indicates whether not a symbol is addressable by relative addressing instructions? Lookahead has its

Re: Still Needed

2010-12-20 Thread Martin Trübner
John, the BRUX-case can easy be coded like this: L R15,=A(RTN01,RTN02,RTN03,RTN04)(R2) BRR15 It is just a little change in habits - but that is all. No need for a new instruction -- Martin Pi_cap_CPU - all you ever need around MWLC/SCRT/CMT in z/VSE more at http://www.picapcpu.de

Re: Still Needed

2010-12-20 Thread Binyamin Dissen
On Mon, 20 Dec 2010 17:39:54 +0100 Martin Trübner mar...@pi-sysprog.de wrote: :the BRUX-case can easy be coded like this: : L R15,=A(RTN01,RTN02,RTN03,RTN04)(R2) : BRR15 1. If there are literals under a base register. 2. IIRC the assembler does not allow indexed literals. 3. Would

Re: Baseless vs Based

2010-12-20 Thread Bodoh John Robert
David, I have never heard of that convention. I don't understand your statement that data fields need to be addressed via a base register. Since I can use LARL to address data fields within my CSECT, I don't require a base register. It maybe poor coding technique to do a LARL every time I

Re: Baseless vs Based

2010-12-20 Thread Tom Marchant
On Mon, 20 Dec 2010 11:16:59 -0500, Bodoh John Robert wrote: No, I'm not trying to use LARL for everything. I just want to use it for the case when a code developer specifies a symbol that references a storage area that can only be referenced by using LARL. That is, no base register. Some of

Re: Baseless vs Based

2010-12-20 Thread David Bond
On Mon, 20 Dec 2010 09:28:27 -0700, Paul Gilmartin wrote: Are modifiable data fields separated for pipeline performance? How? In separate CSECTs, or by DS 4096C? If in the same CSECT, the reach of relative addressing is sufficient for a wide range of programs. A cache line (256 bytes) is

Re: Baseless vs Based

2010-12-20 Thread Paul Gilmartin
On Dec 20, 2010, at 09:30, David Bond wrote: Except for some of the most recent additions to the architecture, data fields (including constants) need to be addressed via base register. Setting it up via LARL does not change that fact. The convention for macros usually is: If a symbol is

Re: Baseless vs Based

2010-12-20 Thread Edward Jaffe
On 12/20/2010 6:05 AM, Bodoh John Robert wrote: I am surprised this not considered a hole in the assembler and is not more pervasive than just for me and my simple case. Do not other macros have the same problem? ROT: Unless you're talking about a branch location, you should not be using

Re: Still Needed

2010-12-20 Thread John P. Baker
Binyamin, I am currently using a BASR/B approach for the BRUX case. I just question whether it is the best approach. Since BRUX would not change any registers, I would think that it would be more efficient in the pipeline. John P. Baker -Original Message- From: IBM Mainframe Assembler

Re: Baseless vs Based

2010-12-20 Thread Bodoh John Robert
Edward, Where does it state that? I have been reading the POP and I can find nowhere where it states that relative addressing instructions are to be used for branching only. John -Original Message- From: IBM Mainframe Assembler List [mailto:assembler-l...@listserv.uga.edu] On Behalf Of

Re: Baseless vs Based

2010-12-20 Thread Paul Gilmartin
On Dec 20, 2010, at 09:59, Bodoh John Robert wrote: It sounds like you're agreeing with me: There is a limitation in macros. Thanks. But don't cite me as an authority. My opinions carry little positive weight in this list. -- gil

Re: Baseless vs Based

2010-12-20 Thread Tom Marchant
On Mon, 20 Dec 2010 09:28:27 -0700, Paul Gilmartin wrote: Are modifiable data fields separated for pipeline performance? How? In separate CSECTs, or by DS 4096C? If in the same CSECT, the reach of relative addressing is sufficient for a wide range of programs. I think you are confusing

Re: Baseless vs Based

2010-12-20 Thread Chris Craddock
wow what a busy topic! At the risk of throwing gasoline on a burning building, I have to say it sounds like a lot of people are struggling to write baseless code (or whatever is eventually decreed as the politically correct term) just for the sake of being baseless. It is obviously very trendy

Re: Baseless vs Based

2010-12-20 Thread David Bond
Ed is saying that most of the data manipulation instructions are base or base-displacement. Examples are L, MVC, AP, MVCLE. There are a few very new instructions that can access data via a relative address. An example is LLHRL. Using LARL just before MVC to set up a temporary base does not turn

Re: Baseless vs Based

2010-12-20 Thread John P. Baker
Chris, I have a software package consisting of roughly 250,000 lines of assembler code. It would be 2-3 times that size if I had not gone to considerable effort to use relative addressing and immediate operands. You apparently feel that baseless code is unnecessary. My real world experience

Re: Baseless vs Based

2010-12-20 Thread Savor, Tom
Chris, I have a software package consisting of roughly 250,000 lines of assembler code. It would be 2-3 times that size if I had not gone to considerable effort to use relative addressing and immediate operands. You apparently feel that baseless code is unnecessary. My real world experience

Re: Baseless vs Based

2010-12-20 Thread Edward Jaffe
On 12/20/2010 9:02 AM, Bodoh John Robert wrote: Where does it state that? I have been reading the POP and I can find nowhere where it states that relative addressing instructions are to be used for branching only. LOL! That's why it's called a ROT (Rule of Thumb). The original intended use

MACRO operand addresses (was Baseless vs Based)

2010-12-20 Thread David Bond
For an example of using relative addressing of data using z/OS macros, consider: PUT DCB,RECORD which can also be coded as: LARL R1,DCB LARL R0,RECORD PUT (1),(0) The macro does not need to somehow determine DCB and RECORD need to be addressed via LARL instead of LA because the

Re: Baseless vs Based

2010-12-20 Thread John P. Baker
Tom, In my code I have a need to be able to simultaneously access a number of different control blocks, so I have a lot of registers tied up. No space for more than one instruction base register, but I cannot limit the code in a procedure to 4K. So I write baseless code. I tried breaking the

Re: Baseless vs Based

2010-12-20 Thread Binyamin Dissen
On Mon, 20 Dec 2010 13:36:26 -0500 John P. Baker jbaker...@comporium.net wrote: :In my code I have a need to be able to simultaneously access a number of :different control blocks, so I have a lot of registers tied up. No space :for more than one instruction base register, but I cannot limit the

Re: Baseless vs Based

2010-12-20 Thread John P. Baker
Benyamin, MVCL requires 4 registers. PLO can require even more. With R0, R1, R13, R14, and R15 already unavailable, and several more tied up with critical control blocks, the number of available registers is already limited. Instruction base registers exacerbate the problem. Breaking down a

Re: PLO (Was: Baseless vs Based)

2010-12-20 Thread John P. Baker
Edward, No doubt about it. PLO is a great instruction! Difficult to understand at first, and the operand mapping could drive a troll to fits, but it is very fast. My point was that some of the PLO variants use lots of registers. John P. Baker -Original Message- From: IBM Mainframe

Re: Baseless vs Based

2010-12-20 Thread Duffy Nightingale
I like this idea. But regs are rarely a problem for me. I always use a couple for code and a couple for storage. Try to keep prog size small. Use small routines which store work regs at begin of routine, then restore at routine exit. Same way with using if an area is used almost everywhere

Re: Baseless vs Based

2010-12-20 Thread Gerhard Adam
With R0, R1, R13, R14, and R15 already unavailable, and several more tied up with critical control blocks, the number of available registers is already limited. Instruction base registers exacerbate the problem. There is no reason to use base registers for branching, so the only concern would be

Re: Baseless vs Based

2010-12-20 Thread John P. Baker
Gerhard, R13 is being used for dynamic storage (register save areas). My whole point in this discussion is that I am using baseless code (for instructions) so that I have additional registers available for various control blocks, complex instructions (such as MVCL and PLO), etc. Chris made the

Re: Still Needed

2010-12-20 Thread Robert A. Rosenberg
At 18:47 +0200 on 12/20/2010, Binyamin Dissen wrote about Re: Still Needed: :the BRUX-case can easy be coded like this: : L R15,=A(RTN01,RTN02,RTN03,RTN04)(R2) : BRR15 1. If there are literals under a base register. 2. IIRC the assembler does not allow indexed literals. So go

Re: Still Needed

2010-12-20 Thread Robert A. Rosenberg
At 11:43 -0500 on 12/20/2010, John P. Baker wrote about Re: Still Needed: Martin, Except that the L instruction requires a base register. John P. Baker Even with BaseLess Programming you usually have one base register for your constants (the baseless if for your code) so the literal would

Re: Baseless vs Based

2010-12-20 Thread Robert A. Rosenberg
At 11:03 -0500 on 12/20/2010, David Bond wrote about Re: Baseless vs Based: A good use for LARL is to set up the base register for the constants - and maybe the modifiable data area if the program is not reentrant. LARL can even be used to get the address of other control sections. But I

Re: Baseless vs Based

2010-12-20 Thread David Bond
Why is it playing with fire? The z/OS linker happily resolves external references, even those from relative addresses such as those in LARL and BRASL. On Mon, 20 Dec 2010 16:13:44 -0500, Robert A. Rosenberg wrote: A LARL reference to another control section is playing with fire since the

Re: Baseless vs Based

2010-12-20 Thread Edward Jaffe
On 12/20/2010 1:13 PM, Robert A. Rosenberg wrote: At 11:03 -0500 on 12/20/2010, David Bond wrote about Re: Baseless vs Based: A good use for LARL is to set up the base register for the constants - and maybe the modifiable data area if the program is not reentrant. LARL can even be used to get

Re: Baseless vs Based

2010-12-20 Thread Savor, Tom
Tom, In my code I have a need to be able to simultaneously access a number of different control blocks, so I have a lot of registers tied up. No space for more than one instruction base register, but I cannot limit the code in a procedure to 4K. So I write baseless code. I tried breaking the

Re: Baseless vs Based

2010-12-20 Thread John P. Baker
Tom, Running baseless just frees up additional registers, so that I can avoid the overhead of repeated stores and loads. It does NOT eliminate any need for a CLCL, MVCL, or PLO machine instruction. John P. Baker -Original Message- From: IBM Mainframe Assembler List