mirror of
https://github.com/janet-lang/janet
synced 2024-11-28 11:09:54 +00:00
Move asm into core and rename to asm/disasm (no prefix)
This commit is contained in:
parent
1ea9ebf04f
commit
fde9751eab
@ -34,10 +34,6 @@ SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
|
|||||||
include_directories(src/include)
|
include_directories(src/include)
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
set(ASSEMBLER_SOURCES
|
|
||||||
src/assembler/asm.c
|
|
||||||
)
|
|
||||||
|
|
||||||
set(COMPILER_SOURCES
|
set(COMPILER_SOURCES
|
||||||
src/compiler/compile.c
|
src/compiler/compile.c
|
||||||
src/compiler/cfuns.c
|
src/compiler/cfuns.c
|
||||||
@ -52,6 +48,7 @@ src/compiler/compile.h
|
|||||||
set(CORE_SOURCES
|
set(CORE_SOURCES
|
||||||
src/core/abstract.c
|
src/core/abstract.c
|
||||||
src/core/array.c
|
src/core/array.c
|
||||||
|
src/core/asm.c
|
||||||
src/core/buffer.c
|
src/core/buffer.c
|
||||||
src/core/bytecode.c
|
src/core/bytecode.c
|
||||||
src/core/corelib.c
|
src/core/corelib.c
|
||||||
@ -88,12 +85,7 @@ src/mainclient/line.c
|
|||||||
src/mainclient/line.h
|
src/mainclient/line.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set(TESTLIB_SOURCES
|
|
||||||
src/testlib/testlib.c
|
|
||||||
)
|
|
||||||
|
|
||||||
set(REPL_SOURCES
|
set(REPL_SOURCES
|
||||||
${ASSEMBLER_SOURCES}
|
|
||||||
${COMPILER_SOURCES}
|
${COMPILER_SOURCES}
|
||||||
${CORE_SOURCES}
|
${CORE_SOURCES}
|
||||||
${MAINCLIENT_SOURCES}
|
${MAINCLIENT_SOURCES}
|
||||||
@ -102,7 +94,6 @@ ${MAINCLIENT_SOURCES}
|
|||||||
# Set Public headers
|
# Set Public headers
|
||||||
set(DST_PUBLIC_HEADERS
|
set(DST_PUBLIC_HEADERS
|
||||||
src/include/dst/dst.h
|
src/include/dst/dst.h
|
||||||
src/include/dst/dstasm.h
|
|
||||||
src/include/dst/dstcompile.h
|
src/include/dst/dstcompile.h
|
||||||
src/include/dst/dstconfig.h
|
src/include/dst/dstconfig.h
|
||||||
src/include/dst/dstcorelib.h
|
src/include/dst/dstcorelib.h
|
||||||
|
4
Makefile
4
Makefile
@ -58,7 +58,6 @@ DST_ALL_HEADERS=$(DST_HEADERS) \
|
|||||||
$(DST_GENERATED_HEADERS)
|
$(DST_GENERATED_HEADERS)
|
||||||
|
|
||||||
# Source files
|
# Source files
|
||||||
DST_ASM_SOURCES=$(sort $(wildcard src/assembler/*.c))
|
|
||||||
DST_COMPILER_SOURCES=$(sort $(wildcard src/compiler/*.c))
|
DST_COMPILER_SOURCES=$(sort $(wildcard src/compiler/*.c))
|
||||||
DST_CORE_SOURCES=$(sort $(wildcard src/core/*.c))
|
DST_CORE_SOURCES=$(sort $(wildcard src/core/*.c))
|
||||||
DST_MAINCLIENT_SOURCES=$(sort $(wildcard src/mainclient/*.c))
|
DST_MAINCLIENT_SOURCES=$(sort $(wildcard src/mainclient/*.c))
|
||||||
@ -86,8 +85,7 @@ src/compiler/dststlbootstrap.gen.h: src/compiler/boot.dst xxd
|
|||||||
##### The main interpreter program and shared object #####
|
##### The main interpreter program and shared object #####
|
||||||
##########################################################
|
##########################################################
|
||||||
|
|
||||||
DST_LIB_SOURCES=$(DST_ASM_SOURCES) \
|
DST_LIB_SOURCES=$(DST_COMPILER_SOURCES) \
|
||||||
$(DST_COMPILER_SOURCES) \
|
|
||||||
$(DST_CONTEXT_SOURCES) \
|
$(DST_CONTEXT_SOURCES) \
|
||||||
$(DST_CORE_SOURCES)
|
$(DST_CORE_SOURCES)
|
||||||
|
|
||||||
|
@ -16,4 +16,4 @@
|
|||||||
(bork 3)
|
(bork 3)
|
||||||
1)
|
1)
|
||||||
|
|
||||||
(pupper)
|
(do (pupper) 1)
|
||||||
|
@ -247,7 +247,7 @@ value."
|
|||||||
(error ("unexpected loop predicate: " verb)))
|
(error ("unexpected loop predicate: " verb)))
|
||||||
(switch
|
(switch
|
||||||
verb
|
verb
|
||||||
:in-while (do
|
:iterate (do
|
||||||
(def preds @['and (tuple ':= bindings object)])
|
(def preds @['and (tuple ':= bindings object)])
|
||||||
(def subloop (doone (+ i 3) preds))
|
(def subloop (doone (+ i 3) preds))
|
||||||
(tuple 'do
|
(tuple 'do
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
#include <dst/dstopcodes.h>
|
#include <dst/dstopcodes.h>
|
||||||
#include <dst/dstcorelib.h>
|
#include <dst/dstcorelib.h>
|
||||||
#include <dst/dstasm.h>
|
|
||||||
#include <dst/dstcompile.h>
|
#include <dst/dstcompile.h>
|
||||||
|
|
||||||
/* Generated header */
|
/* Generated header */
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
|
|
||||||
#include <dst/dst.h>
|
#include <dst/dst.h>
|
||||||
#include <dst/dstasm.h>
|
|
||||||
#include <dst/dstopcodes.h>
|
#include <dst/dstopcodes.h>
|
||||||
#include <headerlibs/strbinsearch.h>
|
#include <headerlibs/strbinsearch.h>
|
||||||
|
|
||||||
@ -904,7 +903,7 @@ Dst dst_disasm(DstFuncDef *def) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* C Function for assembly */
|
/* C Function for assembly */
|
||||||
int dst_asm_cfun(DstArgs args) {
|
static int cfun_asm(DstArgs args) {
|
||||||
DstAssembleResult res;
|
DstAssembleResult res;
|
||||||
DST_FIXARITY(args, 1);
|
DST_FIXARITY(args, 1);
|
||||||
res = dst_asm(args.v[0], 0);
|
res = dst_asm(args.v[0], 0);
|
||||||
@ -915,7 +914,7 @@ int dst_asm_cfun(DstArgs args) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int dst_disasm_cfun(DstArgs args) {
|
int cfun_disasm(DstArgs args) {
|
||||||
DstFunction *f;
|
DstFunction *f;
|
||||||
DST_FIXARITY(args, 1);
|
DST_FIXARITY(args, 1);
|
||||||
DST_ARG_FUNCTION(f, args, 0);
|
DST_ARG_FUNCTION(f, args, 0);
|
||||||
@ -923,8 +922,8 @@ int dst_disasm_cfun(DstArgs args) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const DstReg cfuns[] = {
|
static const DstReg cfuns[] = {
|
||||||
{"asm.asm", dst_asm_cfun},
|
{"asm", cfun_asm},
|
||||||
{"asm.disasm", dst_disasm_cfun},
|
{"disasm", cfun_disasm},
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
@ -46,6 +46,22 @@ const char *dst_parser_error(DstParser *parser);
|
|||||||
void dst_parser_flush(DstParser *parser);
|
void dst_parser_flush(DstParser *parser);
|
||||||
DstParser *dst_check_parser(Dst x);
|
DstParser *dst_check_parser(Dst x);
|
||||||
|
|
||||||
|
/* Assembly */
|
||||||
|
typedef struct DstAssembleResult DstAssembleResult;
|
||||||
|
typedef struct DstAssembleOptions DstAssembleOptions;
|
||||||
|
enum DstAssembleStatus {
|
||||||
|
DST_ASSEMBLE_OK,
|
||||||
|
DST_ASSEMBLE_ERROR
|
||||||
|
};
|
||||||
|
struct DstAssembleResult {
|
||||||
|
DstFuncDef *funcdef;
|
||||||
|
const uint8_t *error;
|
||||||
|
enum DstAssembleStatus status;
|
||||||
|
};
|
||||||
|
DstAssembleResult dst_asm(Dst source, int flags);
|
||||||
|
Dst dst_disasm(DstFuncDef *def);
|
||||||
|
Dst dst_asm_decode_instruction(uint32_t instr);
|
||||||
|
|
||||||
/* Number scanning */
|
/* Number scanning */
|
||||||
Dst dst_scan_number(const uint8_t *src, int32_t len);
|
Dst dst_scan_number(const uint8_t *src, int32_t len);
|
||||||
int32_t dst_scan_integer(const uint8_t *str, int32_t len, int *err);
|
int32_t dst_scan_integer(const uint8_t *str, int32_t len, int *err);
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2018 Calvin Rose
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to
|
|
||||||
* deal in the Software without restriction, including without limitation the
|
|
||||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
* sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
* IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef DST_ASM_H_defined
|
|
||||||
#define DST_ASM_H_defined
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "dsttypes.h"
|
|
||||||
|
|
||||||
/* Assembly */
|
|
||||||
typedef struct DstAssembleResult DstAssembleResult;
|
|
||||||
typedef struct DstAssembleOptions DstAssembleOptions;
|
|
||||||
enum DstAssembleStatus {
|
|
||||||
DST_ASSEMBLE_OK,
|
|
||||||
DST_ASSEMBLE_ERROR
|
|
||||||
};
|
|
||||||
struct DstAssembleResult {
|
|
||||||
DstFuncDef *funcdef;
|
|
||||||
const uint8_t *error;
|
|
||||||
enum DstAssembleStatus status;
|
|
||||||
};
|
|
||||||
DstAssembleResult dst_asm(Dst source, int flags);
|
|
||||||
Dst dst_disasm(DstFuncDef *def);
|
|
||||||
Dst dst_asm_decode_instruction(uint32_t instr);
|
|
||||||
int dst_asm_cfun(DstArgs args);
|
|
||||||
int dst_disasm_cfun(DstArgs args);
|
|
||||||
|
|
||||||
int dst_lib_asm(DstArgs args);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* DST_ASM_H_defined */
|
|
@ -101,7 +101,7 @@ int dst_lib_os(DstArgs args);
|
|||||||
int dst_lib_string(DstArgs args);
|
int dst_lib_string(DstArgs args);
|
||||||
int dst_lib_marsh(DstArgs args);
|
int dst_lib_marsh(DstArgs args);
|
||||||
int dst_lib_parse(DstArgs args);
|
int dst_lib_parse(DstArgs args);
|
||||||
|
int dst_lib_asm(DstArgs args);
|
||||||
|
|
||||||
/* Useful for compiler */
|
/* Useful for compiler */
|
||||||
Dst dst_op_add(Dst lhs, Dst rhs);
|
Dst dst_op_add(Dst lhs, Dst rhs);
|
||||||
|
Loading…
Reference in New Issue
Block a user