我设计了 RISCV32IM 处理器,并使用“riscv32/64-unknown-elf-gcc”生成测试代码。
我在没有操作系统的系统上进行测试,当我使用下面的编译选项(-O0)时,我很不情愿,因为有很多不必要的代码生成。
riscv64-unknown-elf-gcc -march=rv32im -mabi=ilp32 -nostartfiles -O0 -x c -Ttext 40000000 -Tdata 50000000 -Tbss 60000000 -o main.o main.c
使用编译选项(-O1 或 -O2)时,只生成必要的代码,但根据 C 代码,main() 或 _start() 函数的指令代码位置可能不是指令记忆。
由于系统的性质,main() 或_start() 的代码位置必须位于指令内存的开头。
解决上述问题的编译器选项有哪些?
riscv64-unknown-elf-gcc -march=rv32im -mabi=ilp32 -nostartfiles -O2 -x c -Ttext 40000000 -Tdata 50000000 -Tbss 60000000 -o main.o main.c