commit 331b3ffd20fe871e32d037403031ada54a21d79c Author: Joshua Moerman Date: Sat Feb 27 23:26:23 2016 +0000 initial commit: compiler and bf examples diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9ef9604 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..ef7712b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 2.8) + +project(LLVMCompiler) + +file(GLOB sources "*.cpp") +add_executable(LLVMCompiler ${sources}) + +include_directories("${PROJECT_SOURCE_DIR}") + +# A convenience variable: +set(LLVM_ROOT "/Users/joshua/Documents/Code/build") + +# Now set the header and library paths: +include_directories( SYSTEM ${LLVM_ROOT}/include ) +link_directories( ${LLVM_ROOT}/Release/lib ) +add_definitions( -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -O3 -stdlib=libc++ -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-common -Woverloaded-virtual -Wcast-qual) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++ -nostdinc++ -I ~/Documents/Code/libcxx/include/") + +# Finally, we link the LLVM libraries to our executable: +# left out gtest_main gtest +target_link_libraries(LLVMCompiler pthread m +LLVMAsmParser LLVMInstrumentation LLVMLinker LLVMArchive LLVMBitReader LLVMDebugInfo LLVMOption LLVMipo LLVMVectorize LLVMBitWriter LLVMTableGen LLVMHexagonCodeGen LLVMHexagonDesc LLVMHexagonInfo LLVMHexagonAsmPrinter LLVMNVPTXCodeGen LLVMNVPTXDesc LLVMNVPTXInfo LLVMNVPTXAsmPrinter LLVMMBlazeDisassembler LLVMMBlazeCodeGen LLVMMBlazeDesc LLVMMBlazeAsmPrinter LLVMMBlazeAsmParser LLVMMBlazeInfo LLVMCppBackendCodeGen LLVMCppBackendInfo LLVMMSP430CodeGen LLVMMSP430Desc LLVMMSP430Info LLVMMSP430AsmPrinter LLVMXCoreDisassembler LLVMXCoreCodeGen LLVMXCoreDesc LLVMXCoreInfo LLVMXCoreAsmPrinter LLVMMipsDisassembler LLVMMipsCodeGen LLVMMipsAsmParser LLVMMipsDesc LLVMMipsInfo LLVMMipsAsmPrinter LLVMARMDisassembler LLVMARMCodeGen LLVMARMAsmParser LLVMARMDesc LLVMARMInfo LLVMARMAsmPrinter LLVMPowerPCCodeGen LLVMPowerPCDesc LLVMPowerPCInfo LLVMPowerPCAsmPrinter LLVMSparcCodeGen LLVMSparcDesc LLVMSparcInfo LLVMX86Disassembler LLVMX86AsmParser LLVMX86CodeGen LLVMSelectionDAG LLVMAsmPrinter LLVMX86Desc LLVMX86Info LLVMX86AsmPrinter LLVMX86Utils LLVMMCDisassembler LLVMMCParser LLVMInterpreter LLVMMCJIT LLVMJIT LLVMCodeGen LLVMScalarOpts LLVMInstCombine LLVMTransformUtils LLVMipa LLVMAnalysis LLVMRuntimeDyld LLVMExecutionEngine LLVMTarget LLVMMC LLVMObject LLVMCore LLVMSupport) \ No newline at end of file diff --git a/bf/99bot.bf b/bf/99bot.bf new file mode 100644 index 0000000..74cb56e --- /dev/null +++ b/bf/99bot.bf @@ -0,0 +1,44 @@ +>+++++++++[<+++++++++++>-]<[>[-]>[-]<<[>+>+<<-]>>[<<+>>-]>>> +[-]<<<+++++++++<[>>>+<<[>+>[-]<<-]>[<+>-]>[<<++++++++++>>>+< +-]<<-<-]+++++++++>[<->-]>>+>[<[-]<<+>>>-]>[-]+<<[>+>-<<-]<<< +[>>+>+<<<-]>>>[<<<+>>>-]>[<+>-]<<-[>[-]<[-]]>>+<[>[-]<-]<+++ ++++++[<++++++<++++++>>-]>>>[>+>+<<-]>>[<<+>>-]<[<<<<<.>>>>>- +]<<<<<<.>>[-]>[-]++++[<++++++++>-]<.>++++[<++++++++>-]<++.>+ +++++[<+++++++++>-]<.><+++++..--------.-------.>>[>>+>+<<<-]> +>>[<<<+>>>-]<[<<<<++++++++++++++.>>>>-]<<<<[-]>++++[<+++++++ ++>-]<.>+++++++++[<+++++++++>-]<--.---------.>+++++++[<------ +---->-]<.>++++++[<+++++++++++>-]<.+++..+++++++++++++.>++++++ +++[<---------->-]<--.>+++++++++[<+++++++++>-]<--.-.>++++++++ +[<---------->-]<++.>++++++++[<++++++++++>-]<++++.----------- +-.---.>+++++++[<---------->-]<+.>++++++++[<+++++++++++>-]<-. +>++[<----------->-]<.+++++++++++..>+++++++++[<---------->-]< +-----.---.>>>[>+>+<<-]>>[<<+>>-]<[<<<<<.>>>>>-]<<<<<<.>>>+++ ++[<++++++>-]<--.>++++[<++++++++>-]<++.>+++++[<+++++++++>-]<. +><+++++..--------.-------.>>[>>+>+<<<-]>>>[<<<+>>>-]<[<<<<++ +++++++++++++.>>>>-]<<<<[-]>++++[<++++++++>-]<.>+++++++++[<++ ++++++++>-]<--.---------.>+++++++[<---------->-]<.>++++++[<++ ++++++++++>-]<.+++..+++++++++++++.>++++++++++[<---------->-]< +-.---.>+++++++[<++++++++++>-]<++++.+++++++++++++.++++++++++. +------.>+++++++[<---------->-]<+.>++++++++[<++++++++++>-]<-. +-.---------.>+++++++[<---------->-]<+.>+++++++[<++++++++++>- +]<--.+++++++++++.++++++++.---------.>++++++++[<---------->-] +<++.>+++++[<+++++++++++++>-]<.+++++++++++++.----------.>++++ ++++[<---------->-]<++.>++++++++[<++++++++++>-]<.>+++[<-----> +-]<.>+++[<++++++>-]<..>+++++++++[<--------->-]<--.>+++++++[< +++++++++++>-]<+++.+++++++++++.>++++++++[<----------->-]<++++ +.>+++++[<+++++++++++++>-]<.>+++[<++++++>-]<-.---.++++++.---- +---.----------.>++++++++[<----------->-]<+.---.[-]<<<->[-]>[ +-]<<[>+>+<<-]>>[<<+>>-]>>>[-]<<<+++++++++<[>>>+<<[>+>[-]<<-] +>[<+>-]>[<<++++++++++>>>+<-]<<-<-]+++++++++>[<->-]>>+>[<[-]< +<+>>>-]>[-]+<<[>+>-<<-]<<<[>>+>+<<<-]>>>[<<<+>>>-]<>>[<+>-]< +<-[>[-]<[-]]>>+<[>[-]<-]<++++++++[<++++++<++++++>>-]>>>[>+>+ +<<-]>>[<<+>>-]<[<<<<<.>>>>>-]<<<<<<.>>[-]>[-]++++[<++++++++> +-]<.>++++[<++++++++>-]<++.>+++++[<+++++++++>-]<.><+++++..--- +-----.-------.>>[>>+>+<<<-]>>>[<<<+>>>-]<[<<<<++++++++++++++ +.>>>>-]<<<<[-]>++++[<++++++++>-]<.>+++++++++[<+++++++++>-]<- +-.---------.>+++++++[<---------->-]<.>++++++[<+++++++++++>-] +<.+++..+++++++++++++.>++++++++[<---------->-]<--.>+++++++++[ +<+++++++++>-]<--.-.>++++++++[<---------->-]<++.>++++++++[<++ +++++++++>-]<++++.------------.---.>+++++++[<---------->-]<+. +>++++++++[<+++++++++++>-]<-.>++[<----------->-]<.+++++++++++ +..>+++++++++[<---------->-]<-----.---.+++.---.[-]<<<] diff --git a/bf/99bot.bf.ll b/bf/99bot.bf.ll new file mode 100644 index 0000000..9053283 --- /dev/null +++ b/bf/99bot.bf.ll @@ -0,0 +1,7210 @@ +; ModuleID = 'asdf' + +declare i32 @getchar() + +declare i32 @putchar(i32) + +define i32 @main() { + %malloccall = tail call i8* @malloc(i32 mul (i32 ptrtoint (i8* getelementptr (i8* null, i32 1) to i32), i32 100)) + call void @llvm.memset.p0i8.i32(i8* %malloccall, i8 0, i32 100, i32 1, i1 false) + %1 = getelementptr i8* %malloccall, i32 50 + %2 = getelementptr i8* %1, i32 1 + %3 = load i8* %2 + %4 = add i8 %3, 1 + store i8 %4, i8* %2 + %5 = load i8* %2 + %6 = add i8 %5, 1 + store i8 %6, i8* %2 + %7 = load i8* %2 + %8 = add i8 %7, 1 + store i8 %8, i8* %2 + %9 = load i8* %2 + %10 = add i8 %9, 1 + store i8 %10, i8* %2 + %11 = load i8* %2 + %12 = add i8 %11, 1 + store i8 %12, i8* %2 + %13 = load i8* %2 + %14 = add i8 %13, 1 + store i8 %14, i8* %2 + %15 = load i8* %2 + %16 = add i8 %15, 1 + store i8 %16, i8* %2 + %17 = load i8* %2 + %18 = add i8 %17, 1 + store i8 %18, i8* %2 + %19 = load i8* %2 + %20 = add i8 %19, 1 + store i8 %20, i8* %2 + %21 = load i8* %2 + %22 = icmp ne i8 %21, 0 + br i1 %22, label %23, label %52 + +;