gcc-ia16
libcxx
Our great sponsors
gcc-ia16 | libcxx | |
---|---|---|
11 | 14 | |
154 | 677 | |
- | - | |
0.0 | 0.0 | |
2 months ago | over 4 years ago | |
C | C++ | |
GNU General Public License v3.0 only | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
gcc-ia16
-
Building GCC 1.27 (first GCC with x86 support) (2019)
Mainstream GCC has never supported 16-bit code on x86, only 32-bit
However, there is (at least one) fork which adds 16-bit code support, see https://github.com/tkchia/gcc-ia16
I don't think the GCC maintainers have ever or will ever want to support 16-bit x86, because it is so limited, and adds a lot of messy corner cases, and nowadays is really only of hobbyist/retrocomputing interest.
Maybe there is some 16-bit x86 embedded system still being maintained–there were military spec versions of the 8086, and possibly some weapons system, aircraft, satellite, etc, still in use contains one. But I doubt they'd have any interest in adopting a 16-bit GCC – they'd already have some proprietary compiler they'd been using for decades, switching now would add a lot of risk, very late in the life of a legacy system, for no tangible benefit
-
Djgpp
These days there is also a 16-bit GCC port to DOS (https://github.com/tkchia/gcc-ia16). I never encountered one of those back in the day? I think the compiler itself does not run in 16-bit DOS though.
Anyone interested in compiling for DOS (32-bit or 16-bit) should also check out Free Pascal.
-
Rust is Boring
My advice is, when you feel you need that challenge, install DOSBox or DOSBox-X and Open Watcom C/C++, DJGPP, or gcc-ia16 and do some retro-programming. You'll also get the fun of being able to do low-level hardware twiddling and rely on DOS being so simple that it's effectively an RTOS.
-
Writing FreeDOS Programs in C
Looking at part 1 and some of the videos, it looks like this doesn't actually use OpenWatcom, but i16gcc from the FreeDOS distribution, which looks to be a port of gcc that targets 16-bit x86.
-
"My Reaction to Dr. Stroustrup’s Recent Memory Safety Comments"
And, if that surprises you, gcc-ia16 is a thing that has come into existence not only over a decade after DJGPP but also after Open Watcom already existed.
-
How can I compile rust for 16bit x86 (Intel 8086)?
or GCC IA 16 (https://github.com/tkchia/gcc-ia16) gets someday mainlined (also a multi month/years project) and then gccrs can maybe use it as backend
-
Tools and/or tutorials for making a roguelike in DOS?
There is a 16-bit port of GCC these days as well included together with DJGPP if you install FreeDOS, but available separately as well (I think it can cross-compile from other systems like DJGPP can too?) https://github.com/tkchia/gcc-ia16
-
How FreeDOS Grew Up and Became a Modern DOS
TK Chia and others have been working on adding DOS C/C++ compiler-isms to GCC as well as improving the the codegen to make it more hospitable for DOS apps. So far, the FreeDOS kernel compilable by gcc-ia16.
https://github.com/tkchia/gcc-ia16
- Linux (ELKS) running on an IBM PC XT replica
-
how to get started programming a game/program for dos?
There is a more recent fork of gcc/DJGPP to make 16-bit DOS applications that I also never tried, but that might be worth using (and I think it is bundled in the latest FreeDOS, so it might be very easy to set up by just installing that in a virtual machine?): https://github.com/tkchia/gcc-ia16
libcxx
-
Quants use Rust; Devs use C++ - Hey, it's a compromise!
If you are comparing hoops that library authors need to jump through in both languages, you can easily make the real-world comparison in the other direction, by comparing Rust's Option with C++'s std::optional (an exercise left for the reader): Rust std: https://github.com/rust-lang/rust/blob/master/library/core/src/option.rs libcxx: https://github.com/llvm-mirror/libcxx/blob/master/include/optional
-
My favorite prime number generator
My favorite prime number generator is the undocumented __next_prime():
https://github.com/llvm-mirror/libcxx/blob/78d6a7767ed57b501...
There is no good reason to use this one except in a code golf environment that includes all headers by default, which is where I learned about it.
- Please can someone tell me where I can find the content of the STL
-
"My Reaction to Dr. Stroustrup’s Recent Memory Safety Comments"
I once read a Strousroup quote amounting to "If you understand std::vector, then you understand C++". I thought surely he couldn't have meant the interface but the implentation, googled that llvm's implementation is considered nice and clean, had a look, and noped straight out of there.
- pmr implementation in c++14
-
In Defense of Linked Lists
C++'s STL linked list for comparison (libcxx).
https://github.com/llvm-mirror/libcxx/blob/master/include/li...
-
RFC: C++ Buffer Hardening
> For example, accessing a std::span or a std::vector outside of its bounds would abort the program, and so would accessing an empty std::optional.
I don't really understand the difference with libc++, libstdc++ and msvc stl's respective debug modes, they already do exactly these checks :
- https://github.com/llvm-mirror/libcxx/blob/78d6a7767ed57b501...
- https://github.com/gcc-mirror/gcc/blob/966010b2eb4a4c52f139b...
- Why is std::array implemented as a struct instead of a class?
-
C++ Concurrency Model on x86 for Dummies
I mean it's not hard to read the source for your platform. On Linux/x86_64/libc++ it's roughly:
- https://github.com/llvm-mirror/libcxx/blob/master/include/__...
- https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=nptl/...
I don't particularly care to comb through it to see if anything has changed, but historically it was a a little spin-CAS to make the non-contended path fast and then dropping into a https://en.wikipedia.org/wiki/Futex, which is about as good as it gets for staying mostly in userspace but still letting it be scheduler aware so you're not burning up a core busy-polling, which is what often happens when people try to roll their own shit.
Google wants a bit more latitude on the heuristics and degrees of freedom around read/write ownership, so they did it like this: https://github.com/abseil/abseil-cpp/blob/master/absl/synchr... which is quite a bit better commented/legible.
If anyone reading this can do better than the `abseil-cpp` folks, not only would Google take their PR, they'd probably offer them a job.
- Intrusive List Advantages?
What are some alternatives?
open-watcom-v2 - Open Watcom V2.0 - Source code repository, Wiki, Latest Binary build, Archived builds including all installers for download.
STL - MSVC's implementation of the C++ Standard Library.
elks - Embeddable Linux Kernel Subset - Linux for 8086
kc85.zig - A KC85 emulator written in Zig
build-djgpp - Build DJGPP cross compiler and binutils on Windows (MinGW/Cygwin), Mac OSX and Linux
pacman.zig - Simple Pacman clone written in Zig.
MS-DOS - The original sources of MS-DOS 1.25 and 2.0, for reference purposes
nft_ptr - C++ `std::unique_ptr` that represents each object as an NFT on the Ethereum blockchain
rusty-dos - A Rust skeleton for an MS-DOS program for IBM compatibles and the PC-98, including some PC-98-specific functionality
InterprocessMemPool - c++ library for interprocess memory pools, communication, and automatic network device discovery. lightweight DDS alternative.
emularity - easily embed emulators
lion - Where Lions Roam: RISC-V on the VELDT