# 后端代码生成 ## riscv32i > 仿照ripes的syscall,实现了rv32-vm ### syscall ecall 系统调用 ```c // ecall 系统调用函数实现 #define ECALL_PNT_INT(num) \ ADDI(REG_A0, REG_X0, num), \ ADDI(REG_A7, REG_X0, 0x1), \ ECALL(), #define ECALL_PNT_STR(str) \ ADDI(REG_A0, REG_X0, str), \ ADDI(REG_A7, REG_X0, 0x4), \ ECALL(), #define ECALL_EXIT(errno) \ ADDI(REG_A0, REG_X0, errno), \ ADDI(REG_A7, REG_X0, 10), \ ECALL(), #define ECALL_SCAN_INT(int) \ ADDI(REG_A7, (1025 + 4)), \ ECALL(), #define ECALL_SCAN_STR(str) \ ADDI(REG_A0, REG_X0, str), \ ADDI(REG_A7, REG_X0, (1025 + 5)), \ ECALL(), // 函数声明 void ecall_pnt_int(int num); void ecall_pnt_str(char *str); void ecall_exit(int errno); int ecall_scani(); void ecall_scans(char *str); ```