Provant operacions amb vectors
This commit is contained in:
@@ -1,33 +1,44 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
extern long long int aa_add(long long int a, long long int b);
|
extern unsigned long aa_add(unsigned long a, unsigned long b);
|
||||||
extern long long int aa_sub(long long int a, long long int b);
|
extern unsigned long aa_sub(unsigned long a, unsigned long b);
|
||||||
extern long long int aa_mul(long long int a, long long int b);
|
extern unsigned long aa_mul(unsigned long a, unsigned long b);
|
||||||
extern long long int aa_madd(long long int a, long long int b, long long int c);
|
extern unsigned long aa_madd(unsigned long a, unsigned long b, unsigned long c);
|
||||||
extern long long int aa_udiv(long long int a, long long int b);
|
extern unsigned long aa_udiv(unsigned long a, unsigned long b);
|
||||||
|
|
||||||
extern double aa_fadd(double d, double e);
|
extern double aa_fadd(double d, double e);
|
||||||
extern double aa_fdiv(double d, double e);
|
extern double aa_fdiv(double d, double e);
|
||||||
|
|
||||||
|
extern unsigned long aa_vadd(unsigned long* v);
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
long long int a = 3;
|
unsigned long a = 3;
|
||||||
long long int b = 2;
|
unsigned long b = 2;
|
||||||
long long int c = 2;
|
unsigned long c = 4;
|
||||||
|
unsigned long f = 8;
|
||||||
|
unsigned long g = 7;
|
||||||
|
unsigned long h = 6;
|
||||||
|
unsigned long i = 5;
|
||||||
|
unsigned long j = 9;
|
||||||
|
|
||||||
double d = 3.2;
|
double d = 3.2;
|
||||||
double e = 1.6;
|
double e = 1.6;
|
||||||
|
|
||||||
|
unsigned long v[]= {a, b, c};
|
||||||
|
|
||||||
printf("ARM ASSEMBLY 64-bit Integer Operations\n");
|
printf("ARM ASSEMBLY 64-bit Integer Operations\n");
|
||||||
printf("ADD x0 %d x1 %d RET %d\n", a, b, aa_add(a, b));
|
printf("ADD x0 %lld x1 %lld RET %lld\n", a, b, aa_add(a, b));
|
||||||
printf("SUB x0 %d x1 %d RET %d\n", a, b, aa_sub(a, b));
|
printf("SUB x0 %lld x1 %lld RET %lld\n", a, b, aa_sub(a, b));
|
||||||
printf("MUL x0 %d x1 %d RET %d\n", a, b, aa_mul(a, b));
|
printf("MUL x0 %lld x1 %lld RET %lld\n", a, b, aa_mul(a, b));
|
||||||
printf("MADD x0 %d x1 %d x2 %d RET %d\n", a, b, c, aa_madd(a, b, c));
|
printf("MADD x0 %lld x1 %lld x2 %lld RET %lld\n", a, b, c, aa_madd(a, b, c));
|
||||||
printf("UDIV x0 %d x1 %d RET %d\n", a, b, aa_udiv(a, b));
|
printf("UDIV x0 %lld x1 %lld RET %lld\n", a, b, aa_udiv(a, b));
|
||||||
|
|
||||||
printf("ARM ASSEMBLY 64-bit Floating Point Operations\n");
|
printf("ARM ASSEMBLY 64-bit Floating Point Operations\n");
|
||||||
printf("FADD d0 %lf d1 %lf RET %lf\n", d, e, aa_fadd(d, e));
|
printf("FADD d0 %lf d1 %lf RET %lf\n", d, e, aa_fadd(d, e));
|
||||||
printf("FDIV d0 %lf d1 %lf RET %lf\n", d, e, aa_fdiv(d, e));
|
printf("FDIV d0 %lf d1 %lf RET %lf\n", d, e, aa_fdiv(d, e));
|
||||||
|
|
||||||
|
printf("ARM ASSEMBLY 64-bit Integer Operations with Vectors\n");
|
||||||
|
printf("VADD v[0] %lld v[1] %lld RET %lld\n", v[0], v[1], aa_vadd(v));
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|||||||
8
MathWorld/src/aa_vadd.s
Normal file
8
MathWorld/src/aa_vadd.s
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
.global aa_vadd
|
||||||
|
.type aa_vadd, "function"
|
||||||
|
.p2align 4
|
||||||
|
aa_vadd:
|
||||||
|
ldr x1, [x0]
|
||||||
|
ldr x2, [x0, #8]
|
||||||
|
add x0, x1, x2
|
||||||
|
ret
|
||||||
Reference in New Issue
Block a user