| 
    
The following are the first 3 PowerPC instructions the RPG compiler emits
when an immediate value is added to a pointer.
Here is the RPG:
 d pData          s            *
 d pResult        s            *
  /free
       pResult    = pData + 352 ;
Here are the PowerPC instructions:
  LQ     24, 0x1e50(30), 6
  SELRI  26, 25, 0, 41
  ADDI   18, 26, 352
LQ ( load quad word ) loads the 16 bytes ( an os400 pointer ) starting at EA
(effective address ) reg30 + 0x1e50 into registers 24 and 25.
SELRI is taking register 25 ( the address portion of the loaded pointer ),
doing something to it and the result ends up in reg26.
ADDI adds 352 ( pData + 352 ) to reg26 and places the result in reg18.
I have two questions.  What is the 3rd operand of the LQ instruction used
for?
  LQ  24, 0x1e50(30), 6
This very good PowerPC assembler reference site
http://www.nersc.gov/vendor_docs/ibm/asm/mastertoc.htm
http://www.nersc.gov/vendor_docs/ibm/asm/lq.htm#lq_instruction
calls the 3rd operand "PT" and says it is a 4 bit unsigned immediate value.
What is the SELRI instruction?  There is also a SELRR which appears to be
pointer related also.  I cant find online documentation for those
instructions.
-Steve Richter
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.