Position independent programming for humans. (WIP.)
Or seriously, automation of position independent code generation from normal C source code.
Current State: It's a pretotype or a toy serving educational purposes.
Clone and run.
git clone --depth 1 https://github.com/NoviceLive/intellicoder.git
pip install -r requirements.txt
./ic.py --help
See ./ic.py --help
.
Note that some commands are not usable and some may change without notification.
./ic.py --help Usage: ic.py [OPTIONS] COMMAND [ARGS]... Position Independent Programming For Humans. Options: -V, --version Show the version and exit. -v, --verbose Be verbose. -q, --quiet Be quiet. -d, --database PATH Connect the database. -s, --sense PATH Connect the IntelliSense database. -h, --help Show this message and exit. Commands: add Add data on Linux system calls. build Build (Don't use for the time being). conv Convert binary. export Operate on libraries and exported functions. info Find in the Linux system calls. kinds Operate on IntelliSense kind ids and names. lin Linux. make Make binaries from sources. search Query Windows identifiers and locations. win Windows. winapi Query Win32 API declarations.
See ./ic.py conv --help
.
See ./ic.py info --help
.
$ ./ic.py info fork fork i386 2 long fork(); /* kernel/fork.c */ fork common 57 long fork(); /* kernel/fork.c */ $ ./ic.py info 11 execve i386 11 long execve(const char * filename, const char *const * argv, const char *const * envp); /* fs/exec.c */ long execve(const char * filename, const compat_uptr_t * argv, const compat_uptr_t * envp); /* fs/exec.c */ munmap common 11 long munmap(unsigned long addr, size_t len); /* mm/nommu.c */ long munmap(unsigned long addr, size_t len); /* mm/mmap.c */ $ ./ic.py info 0xb execve i386 11 long execve(const char * filename, const char *const * argv, const char *const * envp); /* fs/exec.c */ long execve(const char * filename, const compat_uptr_t * argv, const compat_uptr_t * envp); /* fs/exec.c */ munmap common 11 long munmap(unsigned long addr, size_t len); /* mm/nommu.c */ long munmap(unsigned long addr, size_t len); /* mm/mmap.c */
A simple abstraction layer of binary executables based on existing predominant libraries such as pyelftools.
Note that it's incomplete and ad-hoc for the time being.
Despite its name, intellicoder.msbuild
does not wrap MSBuild.
Instead, it wraps against MSVC with SDKs (and WDKs) to ease the automation of compilation on Windows.
Collect necessary information, e.g., function prototypes, leveraging the database of IntelliSense.
C library sources and headers.
These are licensed under GNU Lesser General Public License.
Examples.
Note thta some are work in progress and may not work as intended.
Unless otherwise specified, IntelliCoder is licensed under GNU General Public License.