summaryrefslogtreecommitdiffhomepage
path: root/CompilerKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-13 16:08:44 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-13 16:09:45 +0100
commit2a97666a74018379396d12dfae09cf10a6231a20 (patch)
treeac87971c7a5dc3c129b688fbfe293a65feb3891a /CompilerKit
parentb11aa11199cfe873946bc032e031f139348eafd6 (diff)
64asm/64ld: Use origin offset when not specify 'import' and if symbol is
known. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com> Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'CompilerKit')
-rw-r--r--CompilerKit/AsmKit/Arch/64k.hpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/CompilerKit/AsmKit/Arch/64k.hpp b/CompilerKit/AsmKit/Arch/64k.hpp
index b54161d..b070332 100644
--- a/CompilerKit/AsmKit/Arch/64k.hpp
+++ b/CompilerKit/AsmKit/Arch/64k.hpp
@@ -56,7 +56,8 @@ inline std::vector<CpuCode64x0> kOpcodes64x0 = {
kAsmOpcodeDecl("addc", 0b0101011, 0b110, kAsmImmediate)
kAsmOpcodeDecl("decc", 0b0101011, 0b111, kAsmImmediate)
kAsmOpcodeDecl("int", 0b1110011, 0b00, kAsmSyscall)
- kAsmOpcodeDecl("syscall", 0b1110011, 0b00, kAsmSyscall)
+ kAsmOpcodeDecl("sysenter", 0b1110011, 0b01, kAsmSyscall)
+ kAsmOpcodeDecl("sysexit", 0b1110011, 0b10, kAsmSyscall)
kAsmOpcodeDecl("pha", 0b1110011, 0b00, kAsmNoArgs)
kAsmOpcodeDecl("pla", 0b1110011, 0b01, kAsmNoArgs)
};
@@ -69,6 +70,9 @@ inline std::vector<CpuCode64x0> kOpcodes64x0 = {
#define kAsmFloatRegisterPrefix "f"
#define kAsmFloatRegisterLimit 10
+#define kAsmFloatZeroRegister 0
+#define kAsmZeroRegister 0
+
#define kAsmRegisterPrefix "r"
#define kAsmRegisterLimit 20
#define kAsmPcRegister 17
@@ -80,7 +84,7 @@ inline std::vector<CpuCode64x0> kOpcodes64x0 = {
/////////////////////////////////////////////////////////////////////////////
-// SYSTEM CALL ADDRESSING
+// SYSTEM CALL/JUMP ADDRESSING
// | OPCODE | FUNCT3 | FUNCT7 | OFF |