delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/10/06/10:31:35

From: GAMMELJL AT SLU DOT EDU
Date: Tue, 06 Oct 1998 09:31:05 -0500 (CDT)
Subject: attn Nate Eldredge
To: DJGPP AT DELORIE DOT COM
Message-id: <01J2N93MGYK294WP21@SLU.EDU>
Organization: SAINT LOUIS UNIVERSITY St. Louis, MO
X-VMS-To: DJGPP AT DELORIE DOT COM
MIME-version: 1.0
Reply-To: djgpp AT delorie DOT com

extern zadd3(unsigned int *a,unsigned int *b,unsigned int *c);
extern zadd2(unsigned int *a,unsigned int *b);
extern zadd1(unsigned int *a);

#include <stdlib.h>
#include <iostream.h>

unsigned int length=5;
unsigned int lengthpad=length+10;
unsigned int i1,i2,i3,i4,i5,i6,i7,i8;

class scalar {
 public:
    unsigned int *s;
    scalar();
    ~scalar();
};

scalar::scalar()               //constructor for realmp
  {s = new unsigned int [lengthpad];} 

scalar::~scalar()             //destructor for realmp
  {delete[] s;}

scalar a_ram;unsigned int *a=a_ram.s;
scalar b_ram;unsigned int *b=b_ram.s;
scalar c_ram;unsigned int *c=c_ram.s;

scalar aa_ram;unsigned int *aa=aa_ram.s;
scalar bb_ram;unsigned int *bb=bb_ram.s;
scalar cc_ram;unsigned int *cc=cc_ram.s;

unsigned int z1[20];  //I continue to forget that arrays referred to
unsigned int z2[20];        //in asm's must be declared this way.
unsigned int z3[20];
unsigned int z4[20];

#define mode1()             \
__asm__ (                    \
    "movl $0x0,%%ecx\n\t"   \
"L4:\n\t"                   \
    "incl %%ecx\n\t"        \
    "addl %%ecx,_z1(,%%ecx,4)\n\t"         \
    "cmpl _length,%%ecx\n\t"       \
    "jne L4\n\t"                   \
    :                              \
    :                              \
    : "eax", "ecx", "memory", "cc");

main()
  {int i,qqq;
   for (i=1;i<length+1;i++)
     {aa[i]=i;
      bb[i]=2*i;
      cc[i]=3*i;
     }
   zadd3(aa,bb,cc);
   for (i=1;i<length+1;i++) cout<<z1[i]<<" ";
   cout<<'\n';
   for (i=1;i<length+1;i++) cout<<z2[i]<<" ";
   cout<<'\n';
   for (i=1;i<length+1;i++) cout<<z3[i]<<" ";
   cout<<'\n';
   for (i=1;i<length+1;i++) cout<<z4[i]<<" ";
   cout<<'\n';
   cout<<'\n';
   zadd3(z1,bb,cc);
   for (i=1;i<length+1;i++) cout<<z1[i]<<" ";
   cout<<'\n';
   for (i=1;i<length+1;i++) cout<<z2[i]<<" ";
   cout<<'\n';
   for (i=1;i<length+1;i++) cout<<z3[i]<<" ";
   cout<<'\n';
   for (i=1;i<length+1;i++) cout<<z4[i]<<" ";
   cout<<'\n';
   cout<<'\n';
   zadd2(aa,bb);
   for (i=1;i<length+1;i++) cout<<z1[i]<<" ";
   cout<<'\n';
   cout<<'\n';
   zadd1(aa);
   for (i=1;i<length+1;i++) cout<<z1[i]<<" ";
   cout<<'\n';
   cout<<'\n';
  }

zadd3(unsigned int *a,unsigned int *b,unsigned int *c)
  {int i;
   length=abs(length);
   for (i=1;i<length+1;i++)
    {z1[i]=a[i]+b[i]+c[i];
     z2[i]=a[i]+2*b[i]+c[i];
     z3[i]=a[i]+b[i]+2*c[i];
     z4[i]=2*a[i]+b[i]+c[i];
    }
   mode1();
   return 0;
  }
    
zadd2(unsigned int *a,unsigned int *b)
  {int i;
   for (i=1;i<length+1;i++) z1[i]=a[i]+b[i];
   return 0;
  }
    
zadd1(unsigned int *a)
  {int i;
   for (i=1;i<length+1;i++) z1[i]=a[i];
   return 0;
  }


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019