All Projects → LADSoft → Orangec

LADSoft / Orangec

OrangeC Compiler And Tool Chain

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Orangec

Quant Notes
Quantitative Interview Preparation Guide, updated version here ==>
Stars: ✭ 180 (-11.76%)
Mutual labels:  optimization
Aerosandbox
Aircraft design optimization made fast through modern automatic differentiation. Plug-and-play analysis tools for aerodynamics, propulsion, structures, trajectory design, and much, much more.
Stars: ✭ 193 (-5.39%)
Mutual labels:  optimization
Acados
Fast and embedded solvers for nonlinear optimal control
Stars: ✭ 194 (-4.9%)
Mutual labels:  optimization
Optaplanner
AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.
Stars: ✭ 2,454 (+1102.94%)
Mutual labels:  optimization
Flips
Fsharp LInear Programming System
Stars: ✭ 188 (-7.84%)
Mutual labels:  optimization
Elinux
嵌入式 Linux 知识库 (elinux.org) 中文翻译计划;本项目发起人发布了《360° 剖析 Linux ELF》视频课程,欢迎订阅:https://www.cctalk.com/m/group/88089283
Stars: ✭ 193 (-5.39%)
Mutual labels:  toolchain
Openwrt Sfe Flowoffload Ath79
Openwrt firmware with SFE and FlowOffload
Stars: ✭ 178 (-12.75%)
Mutual labels:  optimization
Grunt Image
Optimize PNG, JPEG, GIF, SVG images with grunt task.
Stars: ✭ 201 (-1.47%)
Mutual labels:  optimization
Coz
Coz: Causal Profiling
Stars: ✭ 2,719 (+1232.84%)
Mutual labels:  optimization
Ompr
R package to model Mixed Integer Linear Programs
Stars: ✭ 198 (-2.94%)
Mutual labels:  optimization
Hyperactive
A hyperparameter optimization and data collection toolbox for convenient and fast prototyping of machine-learning models.
Stars: ✭ 182 (-10.78%)
Mutual labels:  optimization
Powermodels.jl
A Julia/JuMP Package for Power Network Optimization
Stars: ✭ 187 (-8.33%)
Mutual labels:  optimization
Pygpgo
Bayesian optimization for Python
Stars: ✭ 196 (-3.92%)
Mutual labels:  optimization
Ml Systems
papers on scalable and efficient machine learning systems
Stars: ✭ 182 (-10.78%)
Mutual labels:  optimization
Odl
Operator Discretization Library https://odlgroup.github.io/odl/
Stars: ✭ 198 (-2.94%)
Mutual labels:  optimization
Dropcss
An exceptionally fast, thorough and tiny unused-CSS cleaner
Stars: ✭ 2,102 (+930.39%)
Mutual labels:  optimization
Peroxide
Rust numeric library with R, MATLAB & Python syntax
Stars: ✭ 191 (-6.37%)
Mutual labels:  optimization
Python Mip
Collection of Python tools for the modeling and solution of Mixed-Integer Linear programs
Stars: ✭ 202 (-0.98%)
Mutual labels:  optimization
Nxdk
The cross-platform, open-source SDK to develop for original Xbox: *new* xdk
Stars: ✭ 200 (-1.96%)
Mutual labels:  toolchain
Cornell Moe
A Python library for the state-of-the-art Bayesian optimization algorithms, with the core implemented in C++.
Stars: ✭ 198 (-2.94%)
Mutual labels:  optimization

OrangeC

OrangeC Compiler And Tool Chain

Project Build Status: Build status Appveyor Build status Travis-CI

Documentation status: Documentation Status

Coverity scan status: Coverity Scan Build Status

Orange C is currently a Win32 C++ compiler. Long term it is going to be retargetable.

The Orange C package also includes a C compiler for .Net, which compiles to MSIL/CIL. It is an offshoot of Orange C that is retarged for .NET. Documentation may be found here: OCCIL documentation

Source Code for Orange C is released under the GNU General Public License version 3.

This compiler comes in an install package with an IDE suitable for developing WIN32 programs. Help files are included; the source format for the help files is HELPSCRIBBLE's HSC format.

The compiler can be built with various C++11 compilers, however, by default it is configured to use the Visual Studio 2017 community edition. A solution exists which will build all files in the project, or you can use the project's omake program to build it from the command line (you can also use MSBUILD if so inclined)

The compiler uses a text-based output format, a variant of the IEEE-695 OMF. I've preferred this since it is easier to debug… at one point I did try turning it into a binary format but once I got far enough to prototype it there didn't seem to be enough gain to complete the work. And I really like text files a lot lol!

The make program is eerily similar to GNU make, however, with me never having the pleasure of actually using GNU make I don't know how close I got. The code was developed independently of GNU make, and without ever looking at the sources for GNU make.

At the moment there is only partial support for retargeting the compiler and toolchain. The toolchain introduces an extra phase to the usual compile-assemble-link process in the form of a post-link step called a downloader. Essentially the downloader takes the output of the linker and turns it into an OS-friendly executable file for whatever OS is being targeted. There are presently downloaders for WINDOWS 32 bit PE files, several DOS 32-bit file formats, and a downloader that generates HEX files for burning to EPROM.

The linker supports specification files to allow customization of the link and download processes; these files basically select a downloader based on command line switches and then guide the link process in generating an image that can be processed by the downloader. Meta-data may be added to the linker output using this mechanism as well, for example it is used in setting up default values for the objects in the PE file.

There is some support for retargeting the assembler; the instruction set may be completely customized in an architecture description file, which makes a set of tables to guide the translation from text to binary code. This is used to retarget the assembler code generation, and will eventually also be used in the compiler. There is some other data such as for assembler directives which will also eventually be placed into the architecture description…. And long term there is a goal of placing directives for translating the intermediate code into assembly language statements there as well.

There has been some thought as to eventually making this an x64 compiler, however, that would take a bit of effort as it wasn't well-supported while developing the code. Mostly, there are a lot of place that long-long values need to be passed around in the tools, where only int values are being passed around.

The Appveyor CI project for this repository builds a setup file after each checkin. It uses omake fullbuild to do this. See the file build.md for instructions on how to build the project.

The Read The Docs project for this repository verifies the documentation after each checkin.

For the project's history see the file HISTORY.md.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].