|
IBM occasionally moves certain instructions (from HLL's) into MI built-ins to improve performance. Obviously memcpy() is called a lot in C and to improve performance, they made it an MI instruction too. There is also CPYBYTES() which is twice as fast at copying bytes of data from one location to another as memcpy or cpybla, but the cost of that is that you can't have any embedded pointers in the data being copied. -Bob -----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Christen, Duane J. Sent: Thursday, September 16, 2004 11:22 AM To: 'RPG programming on the AS400 / iSeries' Subject: RE: Builtins Keith, I generally check the MI manual for builtins when dealing with "system APIs" but I had never thought that "language specific" APIs would also be built in. Thanks for reminding me to look outside the box, I need that several times a day... Duane Christen > -----Original Message----- > From: Keith Carpenter [mailto:CarpCon@xxxxxxx] > Sent: Thursday, September 16, 2004 9:58 AM > To: RPG programming on the AS400 / iSeries > Subject: Re: Builtins > > > Duane, > > The V5R3 info center has some of the information you are asking for > http://publib.boulder.ibm.com/infocenter/iseries/v5r3/ic2924/index.htm > > Look under: Programming, APIs, MI programming, Machine interface > instructions. > > ILE built-ins are a subset of MI instructions. Of the MI instructions > listed, the ones that are available as built-ins are > documented as having a > "built-in number" along with the interface for "bound program access". > > Looking up MEMCPY it describes the "bound program access" as > > Built-in number for MEMCPY is 15. > MEMCPY ( > target_string : address of aggregate(*) > source_string : address of aggregate(*) > copy_length : unsigned binary(4) value which specifies the > number of bytes to copy > ) : space pointer(16) to the target string > > > The interface happens to be the same as the C library version > of memcpy. If > you don't have a RPG prototype, this will work. > > d memcpy pr * extproc('__memcpy') > d target * value > d source * value > d length 10u 0 value > > > The missing piece of information is determing the actual > builtin name to use > (ie. "__memcpy"). > > > > Keith > > > > > > > > Bob, > > > > Earlier this week, or last week, you mentioned using the builtin for > memcpy > > (__memcpy) rather than the C library function. I could find no > description, > > in the C/C++ Run-time Functions manual, of which functions > are builtin, > and > > looking through the info-center search did'nt help much > either. Is there a > > list of builtins somewhere or is there a rule of thumb in > defining them? > > > > > > Thanks > > > > Duane Christen > > -- > This is the RPG programming on the AS400 / iSeries (RPG400-L) > mailing list > To post a message email: RPG400-L@xxxxxxxxxxxx > To subscribe, unsubscribe, or change list options, > visit: http://lists.midrange.com/mailman/listinfo/rpg400-l > or email: RPG400-L-request@xxxxxxxxxxxx > Before posting, please take a moment to review the archives > at http://archive.midrange.com/rpg400-l. > NOTICE: This electronic mail transmission may contain confidential information and is intended only for the person(s) named. Any use, copying or disclosure by any other person is strictly prohibited. If you have received this transmission in error, please notify the sender via e-mail. -- This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 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.