mirror of
https://github.com/janet-lang/janet
synced 2024-11-18 14:44:48 +00:00
Work on windows.
This commit is contained in:
parent
c413bc2b4e
commit
cdb3baaca3
4
examples/sysir/run_samples.bat
Normal file
4
examples/sysir/run_samples.bat
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
janet.exe examples/sysir/samples.janet > temp.nasm
|
||||||
|
nasm -fwin64 temp.nasm -l temp.lst -o temp.o
|
||||||
|
link temp.o legacy_stdio_definitions.lib msvcrt.lib /out:temp.exe
|
||||||
|
temp.exe
|
@ -32,8 +32,8 @@
|
|||||||
(return x)))
|
(return x)))
|
||||||
|
|
||||||
(def main-fn
|
(def main-fn
|
||||||
'(defn _start:void []
|
'(defn WinMain:void []
|
||||||
(syscall 1 1 "Hello, world!\n" 14)
|
#(syscall 1 1 "Hello, world!\n" 14)
|
||||||
(doloop 10 20)
|
(doloop 10 20)
|
||||||
(exit (the int 0))
|
(exit (the int 0))
|
||||||
(return)))
|
(return)))
|
||||||
|
@ -287,7 +287,7 @@ static uint32_t instr_read_type_operand(Janet x, JanetSysIR *ir, ReadOpMode rmod
|
|||||||
return (uint32_t) n;
|
return (uint32_t) n;
|
||||||
} else if (rmode == READ_TYPE_FORWARD_REF) {
|
} else if (rmode == READ_TYPE_FORWARD_REF) {
|
||||||
uint32_t operand = linkage->type_def_count++;
|
uint32_t operand = linkage->type_def_count++;
|
||||||
janet_table_put(linkage->type_name_lookup, x, janet_wrap_number(-operand - 1));
|
janet_table_put(linkage->type_name_lookup, x, janet_wrap_number(-(int64_t)operand - 1));
|
||||||
return operand;
|
return operand;
|
||||||
} else if (rmode == READ_TYPE_DEFINITION) {
|
} else if (rmode == READ_TYPE_DEFINITION) {
|
||||||
uint32_t operand = linkage->type_def_count++;
|
uint32_t operand = linkage->type_def_count++;
|
||||||
@ -1600,7 +1600,7 @@ void janet_sys_ir_lower_to_ir(JanetSysIRLinkage *linkage, JanetArray *into) {
|
|||||||
build_tuple[0] = janet_csymbolv("type-array");
|
build_tuple[0] = janet_csymbolv("type-array");
|
||||||
build_tuple[1] = janet_sys_get_desttype(linkage, instruction.array.dest_type);
|
build_tuple[1] = janet_sys_get_desttype(linkage, instruction.array.dest_type);
|
||||||
build_tuple[2] = janet_sys_get_desttype(linkage, instruction.array.type);
|
build_tuple[2] = janet_sys_get_desttype(linkage, instruction.array.type);
|
||||||
build_tuple[4] = janet_wrap_number(instruction.array.fixed_count);
|
build_tuple[4] = janet_wrap_number((double) instruction.array.fixed_count);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
const Janet *tuple = janet_tuple_end(build_tuple);
|
const Janet *tuple = janet_tuple_end(build_tuple);
|
||||||
|
@ -585,8 +585,8 @@ void janet_sys_ir_lower_to_x64(JanetSysIRLinkage *linkage, JanetBuffer *buffer)
|
|||||||
sysemit_operand(&ctx, instruction.branch.cond, ", 0\n");
|
sysemit_operand(&ctx, instruction.branch.cond, ", 0\n");
|
||||||
janet_formatb(buffer,
|
janet_formatb(buffer,
|
||||||
"%s label_%d_%u\n",
|
"%s label_%d_%u\n",
|
||||||
instruction.opcode == JANET_SYSOP_BRANCH ? "jnz " : "jz ",
|
instruction.opcode == JANET_SYSOP_BRANCH ? "jnz" : "jz",
|
||||||
i, instruction.branch.to);
|
i, (uint64_t) instruction.branch.to);
|
||||||
break;
|
break;
|
||||||
case JANET_SYSOP_JUMP:
|
case JANET_SYSOP_JUMP:
|
||||||
janet_formatb(buffer, "jmp label_%d_%u\n", i, instruction.jump.to);
|
janet_formatb(buffer, "jmp label_%d_%u\n", i, instruction.jump.to);
|
||||||
|
Loading…
Reference in New Issue
Block a user