C code examples
This commit is contained in:
parent
7910a061bc
commit
17ac1ae411
|
@ -0,0 +1,50 @@
|
||||||
|
TARGET = trace
|
||||||
|
|
||||||
|
TARGET_ARCH=riscv32
|
||||||
|
|
||||||
|
CC = riscv32-unknown-linux-gnu-gcc
|
||||||
|
# compiling flags here
|
||||||
|
#CFLAGS = -Wall -I. -O0 -nostartfiles -march=rv32i -mabi=ilp32
|
||||||
|
CFLAGS = -Wall -I. -O0 -nostdlib -march=rv32i -mabi=ilp32
|
||||||
|
|
||||||
|
LINKER = riscv32-unknown-linux-gnu-gcc
|
||||||
|
# linking flags here
|
||||||
|
LFLAGS = -I.
|
||||||
|
LIBS = $(EXTRA_LIBS)
|
||||||
|
|
||||||
|
|
||||||
|
# change these to proper directories where each file should be
|
||||||
|
SRCDIR = ./
|
||||||
|
OBJDIR = .
|
||||||
|
BINDIR = ./
|
||||||
|
INCDIR = -I.
|
||||||
|
LIBDIR = -L.
|
||||||
|
|
||||||
|
|
||||||
|
SOURCES := $(wildcard $(SRCDIR)/*.c)
|
||||||
|
INCLUDES := $(wildcard $(INCDIR)/*.h)
|
||||||
|
OBJECTS := $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
|
||||||
|
rm = rm -f
|
||||||
|
|
||||||
|
|
||||||
|
$(BINDIR)/$(TARGET): $(OBJECTS)
|
||||||
|
# $(LINKER) $(OBJECTS) $(LFLAGS) $(LIBS) $(LIBDIR) -o $@
|
||||||
|
riscv32-unknown-linux-gnu-objdump -d $< > dump
|
||||||
|
objcopy -Oihex $< $(TARGET).hex
|
||||||
|
# @echo "Linking complete!"
|
||||||
|
|
||||||
|
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c
|
||||||
|
@echo "Compiling "$<" ..."
|
||||||
|
# $(CC) $(CFLAGS) $(INCDIR) -c $< -o $@
|
||||||
|
$(CC) $(CFLAGS) $(INCDIR) $< -o $@
|
||||||
|
@echo "Done!"
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
@$(rm) $(OBJECTS)
|
||||||
|
@echo "Cleanup complete!"
|
||||||
|
|
||||||
|
.PHONY: remove
|
||||||
|
remove: clean
|
||||||
|
@$(rm) $(BINDIR)/$(TARGET)
|
||||||
|
@echo "Executable removed!"
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
forloop.o: file format elf32-littleriscv
|
||||||
|
|
||||||
|
|
||||||
|
Disassembly of section .text:
|
||||||
|
|
||||||
|
00010074 <main>:
|
||||||
|
10074: fe010113 addi sp,sp,-32
|
||||||
|
10078: 00812e23 sw s0,28(sp)
|
||||||
|
1007c: 02010413 addi s0,sp,32
|
||||||
|
10080: fe042623 sw zero,-20(s0)
|
||||||
|
10084: 01c0006f j 100a0 <main+0x2c>
|
||||||
|
10088: fec42783 lw a5,-20(s0)
|
||||||
|
1008c: 00578793 addi a5,a5,5
|
||||||
|
10090: fef42423 sw a5,-24(s0)
|
||||||
|
10094: fec42783 lw a5,-20(s0)
|
||||||
|
10098: 00178793 addi a5,a5,1
|
||||||
|
1009c: fef42623 sw a5,-20(s0)
|
||||||
|
100a0: fec42703 lw a4,-20(s0)
|
||||||
|
100a4: 00900793 li a5,9
|
||||||
|
100a8: fee7d0e3 ble a4,a5,10088 <main+0x14>
|
||||||
|
100ac: 00000013 nop
|
||||||
|
100b0: 01c12403 lw s0,28(sp)
|
||||||
|
100b4: 02010113 addi sp,sp,32
|
||||||
|
100b8: 00008067 ret
|
|
@ -0,0 +1,8 @@
|
||||||
|
void main(void) {
|
||||||
|
volatile int i;
|
||||||
|
volatile int a;
|
||||||
|
|
||||||
|
for(i=0;i<10;i++) {
|
||||||
|
a=i+5;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
TARGET = trace
|
||||||
|
|
||||||
|
TARGET_ARCH=riscv32
|
||||||
|
|
||||||
|
CC = riscv32-unknown-linux-gnu-gcc
|
||||||
|
# compiling flags here
|
||||||
|
#CFLAGS = -Wall -I. -O0 -nostartfiles -march=rv32i -mabi=ilp32
|
||||||
|
CFLAGS = -Wall -I. -O0 -nostdlib -march=rv32i -mabi=ilp32
|
||||||
|
|
||||||
|
LINKER = riscv32-unknown-linux-gnu-gcc
|
||||||
|
# linking flags here
|
||||||
|
LFLAGS = -I.
|
||||||
|
LIBS = $(EXTRA_LIBS)
|
||||||
|
|
||||||
|
|
||||||
|
# change these to proper directories where each file should be
|
||||||
|
SRCDIR = ./
|
||||||
|
OBJDIR = .
|
||||||
|
BINDIR = ./
|
||||||
|
INCDIR = -I.
|
||||||
|
LIBDIR = -L.
|
||||||
|
|
||||||
|
|
||||||
|
SOURCES := $(wildcard $(SRCDIR)/*.c)
|
||||||
|
INCLUDES := $(wildcard $(INCDIR)/*.h)
|
||||||
|
OBJECTS := $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
|
||||||
|
rm = rm -f
|
||||||
|
|
||||||
|
|
||||||
|
$(BINDIR)/$(TARGET): $(OBJECTS)
|
||||||
|
# $(LINKER) $(OBJECTS) $(LFLAGS) $(LIBS) $(LIBDIR) -o $@
|
||||||
|
riscv32-unknown-linux-gnu-objdump -d $< > dump
|
||||||
|
objcopy -Oihex $< $(TARGET).hex
|
||||||
|
# @echo "Linking complete!"
|
||||||
|
|
||||||
|
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c
|
||||||
|
@echo "Compiling "$<" ..."
|
||||||
|
# $(CC) $(CFLAGS) $(INCDIR) -c $< -o $@
|
||||||
|
$(CC) $(CFLAGS) $(INCDIR) $< -o $@
|
||||||
|
@echo "Done!"
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
@$(rm) $(OBJECTS)
|
||||||
|
@echo "Cleanup complete!"
|
||||||
|
|
||||||
|
.PHONY: remove
|
||||||
|
remove: clean
|
||||||
|
@$(rm) $(BINDIR)/$(TARGET)
|
||||||
|
@echo "Executable removed!"
|
|
@ -0,0 +1,20 @@
|
||||||
|
|
||||||
|
trace.o: file format elf32-littleriscv
|
||||||
|
|
||||||
|
|
||||||
|
Disassembly of section .text:
|
||||||
|
|
||||||
|
00010074 <main>:
|
||||||
|
10074: ff010113 addi sp,sp,-16
|
||||||
|
10078: 00812623 sw s0,12(sp)
|
||||||
|
1007c: 01010413 addi s0,sp,16
|
||||||
|
10080: 400007b7 lui a5,0x40000
|
||||||
|
10084: 04800713 li a4,72
|
||||||
|
10088: 00e78023 sb a4,0(a5) # 40000000 <__global_pointer$+0x3ffee758>
|
||||||
|
1008c: 400007b7 lui a5,0x40000
|
||||||
|
10090: 06500713 li a4,101
|
||||||
|
10094: 00e78023 sb a4,0(a5) # 40000000 <__global_pointer$+0x3ffee758>
|
||||||
|
10098: 00000013 nop
|
||||||
|
1009c: 00c12403 lw s0,12(sp)
|
||||||
|
100a0: 01010113 addi sp,sp,16
|
||||||
|
100a4: 00008067 ret
|
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
#define TRACE (*(unsigned char *)0x40000000)
|
||||||
|
|
||||||
|
void main(void) {
|
||||||
|
TRACE = 'H';
|
||||||
|
TRACE = 'e';
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
TARGET = trace2
|
||||||
|
|
||||||
|
TARGET_ARCH=riscv32
|
||||||
|
|
||||||
|
CC = riscv32-unknown-linux-gnu-gcc
|
||||||
|
# compiling flags here
|
||||||
|
#CFLAGS = -Wall -I. -O0 -nostartfiles -march=rv32i -mabi=ilp32
|
||||||
|
CFLAGS = -Wall -I. -O0 -nostdlib -march=rv32i -mabi=ilp32
|
||||||
|
|
||||||
|
LINKER = riscv32-unknown-linux-gnu-gcc
|
||||||
|
# linking flags here
|
||||||
|
LFLAGS = -I.
|
||||||
|
LIBS = $(EXTRA_LIBS)
|
||||||
|
|
||||||
|
|
||||||
|
# change these to proper directories where each file should be
|
||||||
|
SRCDIR = ./
|
||||||
|
OBJDIR = .
|
||||||
|
BINDIR = ./
|
||||||
|
INCDIR = -I.
|
||||||
|
LIBDIR = -L.
|
||||||
|
|
||||||
|
|
||||||
|
SOURCES := $(wildcard $(SRCDIR)/*.c)
|
||||||
|
INCLUDES := $(wildcard $(INCDIR)/*.h)
|
||||||
|
OBJECTS := $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
|
||||||
|
rm = rm -f
|
||||||
|
|
||||||
|
|
||||||
|
$(BINDIR)/$(TARGET): $(OBJECTS)
|
||||||
|
# $(LINKER) $(OBJECTS) $(LFLAGS) $(LIBS) $(LIBDIR) -o $@
|
||||||
|
riscv32-unknown-linux-gnu-objdump -d $< > dump
|
||||||
|
objcopy -Oihex $< $(TARGET).hex
|
||||||
|
# @echo "Linking complete!"
|
||||||
|
|
||||||
|
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c
|
||||||
|
@echo "Compiling "$<" ..."
|
||||||
|
# $(CC) $(CFLAGS) $(INCDIR) -c $< -o $@
|
||||||
|
$(CC) $(CFLAGS) $(INCDIR) $< -o $@
|
||||||
|
@echo "Done!"
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
@$(rm) $(OBJECTS)
|
||||||
|
@echo "Cleanup complete!"
|
||||||
|
|
||||||
|
.PHONY: remove
|
||||||
|
remove: clean
|
||||||
|
@$(rm) $(BINDIR)/$(TARGET)
|
||||||
|
@echo "Executable removed!"
|
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
trace2.o: file format elf32-littleriscv
|
||||||
|
|
||||||
|
|
||||||
|
Disassembly of section .text:
|
||||||
|
|
||||||
|
00010074 <main>:
|
||||||
|
10074: fe010113 addi sp,sp,-32
|
||||||
|
10078: 00812e23 sw s0,28(sp)
|
||||||
|
1007c: 02010413 addi s0,sp,32
|
||||||
|
10080: fe042623 sw zero,-20(s0)
|
||||||
|
10084: 0280006f j 100ac <main+0x38>
|
||||||
|
10088: fec42783 lw a5,-20(s0)
|
||||||
|
1008c: 0ff7f713 andi a4,a5,255
|
||||||
|
10090: 400007b7 lui a5,0x40000
|
||||||
|
10094: 06170713 addi a4,a4,97
|
||||||
|
10098: 0ff77713 andi a4,a4,255
|
||||||
|
1009c: 00e78023 sb a4,0(a5) # 40000000 <__global_pointer$+0x3ffee738>
|
||||||
|
100a0: fec42783 lw a5,-20(s0)
|
||||||
|
100a4: 00178793 addi a5,a5,1
|
||||||
|
100a8: fef42623 sw a5,-20(s0)
|
||||||
|
100ac: fec42703 lw a4,-20(s0)
|
||||||
|
100b0: 00900793 li a5,9
|
||||||
|
100b4: fce7dae3 ble a4,a5,10088 <main+0x14>
|
||||||
|
100b8: 00000013 nop
|
||||||
|
100bc: 01c12403 lw s0,28(sp)
|
||||||
|
100c0: 02010113 addi sp,sp,32
|
||||||
|
100c4: 00008067 ret
|
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
#define TRACE (*(unsigned char *)0x40000000)
|
||||||
|
|
||||||
|
void main(void) {
|
||||||
|
int i;
|
||||||
|
for(i=0;i<10;i++) {
|
||||||
|
TRACE = 'a' + i;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
TARGET = trace3
|
||||||
|
|
||||||
|
TARGET_ARCH=riscv32
|
||||||
|
|
||||||
|
CC = riscv32-unknown-linux-gnu-gcc
|
||||||
|
# compiling flags here
|
||||||
|
#CFLAGS = -Wall -I. -O0 -nostartfiles -march=rv32i -mabi=ilp32
|
||||||
|
CFLAGS = -Wall -I. -O0 -nostdlib -march=rv32i -mabi=ilp32
|
||||||
|
|
||||||
|
LINKER = riscv32-unknown-linux-gnu-gcc
|
||||||
|
# linking flags here
|
||||||
|
LFLAGS = -I.
|
||||||
|
LIBS = $(EXTRA_LIBS)
|
||||||
|
|
||||||
|
|
||||||
|
# change these to proper directories where each file should be
|
||||||
|
SRCDIR = ./
|
||||||
|
OBJDIR = .
|
||||||
|
BINDIR = ./
|
||||||
|
INCDIR = -I.
|
||||||
|
LIBDIR = -L.
|
||||||
|
|
||||||
|
|
||||||
|
SOURCES := $(wildcard $(SRCDIR)/*.c)
|
||||||
|
INCLUDES := $(wildcard $(INCDIR)/*.h)
|
||||||
|
OBJECTS := $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
|
||||||
|
rm = rm -f
|
||||||
|
|
||||||
|
|
||||||
|
$(BINDIR)/$(TARGET): $(OBJECTS)
|
||||||
|
# $(LINKER) $(OBJECTS) $(LFLAGS) $(LIBS) $(LIBDIR) -o $@
|
||||||
|
riscv32-unknown-linux-gnu-objdump -d $< > dump
|
||||||
|
objcopy -Oihex $< $(TARGET).hex
|
||||||
|
# @echo "Linking complete!"
|
||||||
|
|
||||||
|
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c
|
||||||
|
@echo "Compiling "$<" ..."
|
||||||
|
# $(CC) $(CFLAGS) $(INCDIR) -c $< -o $@
|
||||||
|
$(CC) $(CFLAGS) $(INCDIR) $< -o $@
|
||||||
|
@echo "Done!"
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
@$(rm) $(OBJECTS)
|
||||||
|
@echo "Cleanup complete!"
|
||||||
|
|
||||||
|
.PHONY: remove
|
||||||
|
remove: clean
|
||||||
|
@$(rm) $(BINDIR)/$(TARGET)
|
||||||
|
@echo "Executable removed!"
|
|
@ -0,0 +1,42 @@
|
||||||
|
|
||||||
|
trace3.o: file format elf32-littleriscv
|
||||||
|
|
||||||
|
|
||||||
|
Disassembly of section .text:
|
||||||
|
|
||||||
|
00010074 <main>:
|
||||||
|
10074: fd010113 addi sp,sp,-48
|
||||||
|
10078: 02812623 sw s0,44(sp)
|
||||||
|
1007c: 03010413 addi s0,sp,48
|
||||||
|
10080: 000107b7 lui a5,0x10
|
||||||
|
10084: 1007a603 lw a2,256(a5) # 10100 <main+0x8c>
|
||||||
|
10088: 10078713 addi a4,a5,256
|
||||||
|
1008c: 00472683 lw a3,4(a4)
|
||||||
|
10090: 10078713 addi a4,a5,256
|
||||||
|
10094: 00872703 lw a4,8(a4)
|
||||||
|
10098: fcc42e23 sw a2,-36(s0)
|
||||||
|
1009c: fed42023 sw a3,-32(s0)
|
||||||
|
100a0: fee42223 sw a4,-28(s0)
|
||||||
|
100a4: 10078793 addi a5,a5,256
|
||||||
|
100a8: 00c7c783 lbu a5,12(a5)
|
||||||
|
100ac: fef40423 sb a5,-24(s0)
|
||||||
|
100b0: fe042623 sw zero,-20(s0)
|
||||||
|
100b4: 0280006f j 100dc <main+0x68>
|
||||||
|
100b8: 400007b7 lui a5,0x40000
|
||||||
|
100bc: fec42703 lw a4,-20(s0)
|
||||||
|
100c0: ff040693 addi a3,s0,-16
|
||||||
|
100c4: 00e68733 add a4,a3,a4
|
||||||
|
100c8: fec74703 lbu a4,-20(a4)
|
||||||
|
100cc: 00e78023 sb a4,0(a5) # 40000000 <__global_pointer$+0x3ffee6f3>
|
||||||
|
100d0: fec42783 lw a5,-20(s0)
|
||||||
|
100d4: 00178793 addi a5,a5,1
|
||||||
|
100d8: fef42623 sw a5,-20(s0)
|
||||||
|
100dc: fec42783 lw a5,-20(s0)
|
||||||
|
100e0: ff040713 addi a4,s0,-16
|
||||||
|
100e4: 00f707b3 add a5,a4,a5
|
||||||
|
100e8: fec7c783 lbu a5,-20(a5)
|
||||||
|
100ec: fc0796e3 bnez a5,100b8 <main+0x44>
|
||||||
|
100f0: 00000013 nop
|
||||||
|
100f4: 02c12403 lw s0,44(sp)
|
||||||
|
100f8: 03010113 addi sp,sp,48
|
||||||
|
100fc: 00008067 ret
|
|
@ -0,0 +1,12 @@
|
||||||
|
#define TRACE (*(unsigned char *)0x40000000)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void main(void) {
|
||||||
|
char msg[] = "Hello world\n";
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i=0; msg[i] != '\0'; i++) {
|
||||||
|
TRACE = msg[i];
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue