forked from Github_Repos/cvw
		
	Added inline assembly to simple
This commit is contained in:
		
							parent
							
								
									02f6030c02
								
							
						
					
					
						commit
						10921accdb
					
				@ -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:
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user