Added inline assembly to simple

This commit is contained in:
David Harris 2022-01-11 21:32:30 +00:00
parent 02f6030c02
commit 10921accdb
2 changed files with 22 additions and 8 deletions

View File

@ -9,7 +9,7 @@ $(TARGET): $(TARGET).c Makefile
-fno-builtin-printf -fno-tree-loop-distribute-patterns \
-static -nostdlib -nostartfiles -lm -lgcc -T../common/test.ld \
-I../common \
-O $(TARGET).c \
-O0 $(TARGET).c \
../common/crt.S ../common/syscalls.c
clean:

View File

@ -2,20 +2,34 @@
// David_Harris@hmc.edu 24 December 2021
// Simple illustration of compiling C code
#include <stdio.h>
//#include <stdio.h>
#include "util.h"
extern int printf(const char* fmt, ...);
long sum(long N) {
long result, i;
/* long result, i;
result = 0;
for (i=1; i<=N; i++) {
result = result + i;
}
return result;
return result; */
int a;
// asm volatile ("li s0, 10;");
asm volatile(
"li %0, 10"
// "csrrs %0, 0xF14, zero" //CSSRS rd, mhartid, 0
: "=r"(a) //output
: //input
: //clobbered
);
return a;
}
int main(void) {
long s;
s = sum(4);
printf("s = %ld\n", s);
return 0; // 0 means success
int s[1], expected[1];
s[0] = sum(4);
printf("s = %d\n", s[0]);
expected[0] = 10;
return verify(1, s, expected); // 0 means success
}