stage1 修改部分测试 完成17-19测试
This commit is contained in:
@@ -207,7 +207,7 @@ int spl_prog_load_from_file(const char *fname, spl_prog_t *prog) {
|
||||
|
||||
int spl_prog_store_to_file(const char *fname, spl_prog_t *prog) {
|
||||
unsigned char *buf, *p;
|
||||
int i;
|
||||
spl_val_t i;
|
||||
size_t total;
|
||||
spl_val_t nfuncs, ninsns, nnatives, nstrs, ndata;
|
||||
usize nlen, pad;
|
||||
|
||||
@@ -180,7 +180,7 @@ static spl_val_t vm_printf(int nargs, spl_val_t *args) {
|
||||
int arg_idx = 0;
|
||||
char tmp_buf[32];
|
||||
memset(tmp_buf, 0, sizeof(tmp_buf));
|
||||
for (int i = 0; i < fmt_len; ++i) {
|
||||
for (usize i = 0; i < fmt_len; ++i) {
|
||||
if (fmt[i] != '%') {
|
||||
vec_push(buffer, fmt[i]);
|
||||
continue;
|
||||
@@ -192,7 +192,7 @@ static spl_val_t vm_printf(int nargs, spl_val_t *args) {
|
||||
switch (fmt[i]) {
|
||||
case 'd':
|
||||
snprintf(tmp_buf, sizeof(tmp_buf), "%zd", args[arg_idx]);
|
||||
for (int j = 0; j < strlen(tmp_buf); ++j) {
|
||||
for (usize j = 0; j < strlen(tmp_buf); ++j) {
|
||||
vec_push(buffer, tmp_buf[j]);
|
||||
}
|
||||
break;
|
||||
@@ -200,7 +200,7 @@ static spl_val_t vm_printf(int nargs, spl_val_t *args) {
|
||||
vec_push(buffer, (char)args[arg_idx]);
|
||||
break;
|
||||
case 's':
|
||||
for (int j = 0; j < strlen((const char *)args[arg_idx]); ++j) {
|
||||
for (usize j = 0; j < strlen((const char *)args[arg_idx]); ++j) {
|
||||
vec_push(buffer, ((const char *)args[arg_idx])[j]);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -76,10 +76,10 @@ static int spl_type_size(spl_type_t t) {
|
||||
do { \
|
||||
if (vm->sp >= vm->config.max_stack_depth) \
|
||||
VM_ERROR("stack overflow"); \
|
||||
vm->stacks.data[vm->sp++] = (spl_val_t)(v); \
|
||||
vm->stacks.data[(vm->sp)++] = (spl_val_t)(v); \
|
||||
} while (0)
|
||||
|
||||
#define POP() vm->stacks.data[--vm->sp]
|
||||
#define POP() vm->stacks.data[--(vm->sp)]
|
||||
|
||||
/* ================================================================
|
||||
* Type-dispatch macros for arithmetic / comparison
|
||||
@@ -641,7 +641,7 @@ int spl_vm_run_once(spl_vm_t *vm) {
|
||||
return -1;
|
||||
prog = vm->prog;
|
||||
|
||||
if (vm->ip < 0 || vm->ip >= vec_size(prog->insns)) {
|
||||
if (vm->ip >= vec_size(prog->insns)) {
|
||||
fprintf(stderr, "vm: ip=%zd out of bounds\n", vm->ip);
|
||||
vm->exit_code = 1;
|
||||
return -1;
|
||||
@@ -687,7 +687,7 @@ int spl_vm_run_once(spl_vm_t *vm) {
|
||||
|
||||
case SPL_PICK: {
|
||||
isize _idx = ins->imm;
|
||||
if (_idx >= vm->sp)
|
||||
if ((usize)_idx >= vm->sp)
|
||||
VM_ERROR("PICK: index out of range");
|
||||
PUSH(vm->stacks.data[vm->sp - 1 - _idx]);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user