# HG changeset patch # User Shinji KONO # Date 1729843811 -32400 # Node ID c4e2ca100ab98cefa6baa017cdbcc8558e3f105b # Parent 8550260c18faadb09f0417e6cb1fadf36977bfbd llvm worked diff -r 8550260c18fa -r c4e2ca100ab9 CMakeLists.txt --- a/CMakeLists.txt Fri Oct 18 16:06:51 2024 +0900 +++ b/CMakeLists.txt Fri Oct 25 17:10:11 2024 +0900 @@ -22,8 +22,8 @@ # add_executable(s-intel ${COMPILER} s-code-intel.c ) # add_executable(s-intel-r ${COMPILER} s-code-intel-r.c ) # add_executable(s-imac ${COMPILER} s-code-intel-mac.c ) -add_executable(s-imac64 ${COMPILER} s-code-intel64-mac.c ) -add_executable(s-imac64-r ${COMPILER} s-code-intel64-mac-r.c ) +# add_executable(s-imac64 ${COMPILER} s-code-intel64-mac.c ) +# add_executable(s-imac64-r ${COMPILER} s-code-intel64-mac-r.c ) add_executable(s-llvm ${COMPILER} s-code-llvm.c) # add_executable(s-sparc ${COMPILER} s-code-sparc.c ) # add_executable(s-rs6k ${COMPILER} s-code-rs6k.c ) diff -r 8550260c18fa -r c4e2ca100ab9 README.md --- a/README.md Fri Oct 18 16:06:51 2024 +0900 +++ b/README.md Fri Oct 25 17:10:11 2024 +0900 @@ -8,3 +8,12 @@ cmake -DCMAKE_MAKE_PROGRAM=make ``` +# run on lldb + +``` + lldb ./s-llvm + (lldb) b main + (lldb) process launch -i s-input.txt +``` + + diff -r 8550260c18fa -r c4e2ca100ab9 s-code-llvm.c --- a/s-code-llvm.c Fri Oct 18 16:06:51 2024 +0900 +++ b/s-code-llvm.c Fri Oct 25 17:10:11 2024 +0900 @@ -12,13 +12,13 @@ "; ModuleID = 'tmp.c'\n", "source_filename = \"tmp.c\"\n", "target datalayout = \"e-m:o-i64:64-i128:128-n32:64-S128\"\n", - "target triple = \"arm64-apple-macosx14.0.0"\n", + "target triple = \"arm64-apple-macosx14.0.0\"\n", "\n", "@a = global i64 4, align 8\n", "@b = global i64 3, align 8\n", "@p = global i64 3, align 8\n", - "@.str = private unnamed_addr constant [5 x i8] c\"%ld\0A\00\", align 1\n", - "@v = common global [100 x i64] zeroinitializer, align 8\n", + "@.str = private unnamed_addr constant [5 x i8] c\"%ld\\0A\\00\", align 1\n", + "@variable = common global [100 x i32] zeroinitializer, align 8\n", "\n", "; Function Attrs: noinline nounwind optnone ssp uwtable(sync)\n", "define void @print(i64 noundef %0) #0 {\n", @@ -47,19 +47,8 @@ static char *ending[] = { - " store i64 %6, ptr @a, align 8\n", - " %7 = load i64, ptr @a, align 8\n", - " call void @print(i64 noundef %7)\n", - " %8 = load i64, ptr @p, align 8\n", - " %9 = getelementptr inbounds [100 x i64], ptr @v, i64 0, i64 %8\n", - " store i64 3, ptr %9, align 8\n", - " %10 = load i64, ptr @p, align 8\n", - " %11 = getelementptr inbounds [100 x i64], ptr @v, i64 0, i64 %10\n", - " %12 = load i64, ptr %11, align 8\n", - " call void @print(i64 noundef %12)\n", - " %13 = load i64, ptr @a, align 8\n", - " %14 = trunc i64 %13 to i32\n", - " ret i32 %14\n", + // " %7 = add i32 0, 0\n", + // " ret i32 %7\n", "}\n", "\n", "attributes #0 = { noinline nounwind optnone ssp uwtable(sync) \"frame-pointer\"=\"non-leaf\" \"min-legal-vector-width\"=\"0\" \"no-trapping-math\"=\"true\" \"probe-stack\"=\"__chkstk_darwin\" \"stack-protector-buffer-size\"=\"8\" \"target-cpu\"=\"apple-m1\" \"target-features\"=\"+aes,+crc,+crypto,+dotprod,+fp-armv8,+fp16fml,+fullfp16,+lse,+neon,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8a,+zcm,+zcz\" }\n", @@ -83,14 +72,14 @@ static int xreg; /* operand register */ static int reg_sp; /* REGister Stack-Pointer */ -#define MAX_MAX 20 +#define MAX_MAX 200000 static int regs[MAX_MAX]; /* 使われているレジスタを示すフラグ */ static int reg_stack[MAX_MAX]; /* 実際のレジスタの領域 */ -const int MAX_REGISTER=20; +const int MAX_REGISTER=100000; -static int -get_register() +static int +get_register() { /* 使われていないレジスタを調べる */ int i; for(i=0;i