uClibc is a C99 C library that is made to be easily portable, lightweight, and easily built. It's designed for embedded systems, so it was made with size in mind. I recently ported uClibc v0.9.30.1 to my experimental OS called E/OS. Since then, I've really been enjoying the full formatting support of printf/sprintf (using custom wrappers for 80x25 text mode). I had ported PDPClib before (which was a breeze to port), but it had A: less-than-impressive formatting support, B: no C99 compliance, and C: buggy mathematical functions that lead to deadlocking.
With this new library setup, it will be much easier to get *nix applications ported over. I have no intention of designing a *nix-clone, but getting self-hosted (an environment where a user can create programs for the host) is a big deal and GCC/NASM can really help out there.
I just started commiting the new library port to my SVN repository at googlecode, and it has given me nothing but trouble. I added the entire library (~10MB), but I kept getting a "gateway not found" error. I finally had to un-add some of the library and upload it chunk by chunk.
I have an interview tomorrow about a network administrator job position at a local college. Hopefully that goes well.
Night.
Thursday, March 26, 2009
Tuesday, March 17, 2009
Blah blah blah, and on it goes.
Today was a fairly... mediocre day. I got paid for a script I wrote (some JavaScript) earlier and that was a fairly good part of the day. It's sad that money is such an integrated part of our happyness.
I started writing a low-level library in C. It's a library of memory copy/set/clear/move/compare operations that are heavily optimized for the x86 and x86-64 architectures. I use SSE (2 and 4.1 mostly) to control large blocks of memory without filling up the caches due to a lot of small memory transfers. I'm particularly fond of the MOVNTDQA SSE4.1 instruction. The library will be released under the MIT license and currently only has memory_copy(x,y,z) and memory_clear(x,y) functions. It's designed to be very OS independant (not *that* hard due to the low-level nature of it) and should only end up relying on some basic typedefs (size_t) and CPUID structures (for feature parsing of SSEx capabilities).
The Lord of the Rings trilogy (extended versions) came today via NetFlix (which is awesome). Time to drone out for ~7-9 hours while I drool to epic battle scenes.
A grilled cheese sandwich is in order!
Stay Tuned,
Josh
I started writing a low-level library in C. It's a library of memory copy/set/clear/move/compare operations that are heavily optimized for the x86 and x86-64 architectures. I use SSE (2 and 4.1 mostly) to control large blocks of memory without filling up the caches due to a lot of small memory transfers. I'm particularly fond of the MOVNTDQA SSE4.1 instruction. The library will be released under the MIT license and currently only has memory_copy(x,y,z) and memory_clear(x,y) functions. It's designed to be very OS independant (not *that* hard due to the low-level nature of it) and should only end up relying on some basic typedefs (size_t) and CPUID structures (for feature parsing of SSEx capabilities).
The Lord of the Rings trilogy (extended versions) came today via NetFlix (which is awesome). Time to drone out for ~7-9 hours while I drool to epic battle scenes.
A grilled cheese sandwich is in order!
Stay Tuned,
Josh
Labels:
C,
development,
Lord of the Rings,
OSDev,
programming
Monday, March 16, 2009
Out with the C++.NET and in with the C#.NET!
After completing my ping utility in C++.NET, it was time to create a deployment scheme (installer). I searched high and low for a packaging wizard but came up empty handed. I finally turned to good ol' Google and realized that VC++.NET Express 2008 doesn't come with the deployment tools!!! I'm not sure what MS was trying to accomplish with that seeing as how C# and VB.NET both come with deployment wizards. So, I finally snapped and ported the C++.NET app to C#.NET and released it. < /rant >
I'm still doing some brainstorming for my next application (or most likely another Vista Sidebar Gadget). I'm currently working on a web browser in C#.NET that will allow users to alter the appearance of the interface a lot. It's still in its infancy but it already has the basic framework setup.
I will also be re-opening the Auto-Ping Sidebar Gadget that I made a few days ago to add some functionality. It also needs a picture for uploading to Windows Live Gallery. The first release already has 91 downloads as of this moment. I will probably add stricter rules to the ping reply parsing and also allow more user-defined controls (such as ICMP TTL and TimeOut).
I searched for a C# compiler earlier that could output native op-codes or even assembly, but only found a sketchy wonder-tool that costs ~1,000 USD. I will keep searching, but I have a feeling that short of writing a custom CIL parser + compiler, it will be a lost cause to seek native output for such tasks as OSDevelopment and non-.NET-frameworked environment applications.
Stay Tuned,
Josh
I'm still doing some brainstorming for my next application (or most likely another Vista Sidebar Gadget). I'm currently working on a web browser in C#.NET that will allow users to alter the appearance of the interface a lot. It's still in its infancy but it already has the basic framework setup.
I will also be re-opening the Auto-Ping Sidebar Gadget that I made a few days ago to add some functionality. It also needs a picture for uploading to Windows Live Gallery. The first release already has 91 downloads as of this moment. I will probably add stricter rules to the ping reply parsing and also allow more user-defined controls (such as ICMP TTL and TimeOut).
I searched for a C# compiler earlier that could output native op-codes or even assembly, but only found a sketchy wonder-tool that costs ~1,000 USD. I will keep searching, but I have a feeling that short of writing a custom CIL parser + compiler, it will be a lost cause to seek native output for such tasks as OSDevelopment and non-.NET-frameworked environment applications.
Stay Tuned,
Josh
Sunday, March 15, 2009
What a lovely day it is...
The birds are chirping, the sun is shining, and it's not freezing out. It is a good day. I took a walk earlier with my girlfriend and it is definitely t-shirt weather out there! I have the window open all the way while I write this, it's rare to be able to do that. I'll try to enjoy it as much as I can for the next 3-4 months until it starts getting too cold again, what a lovely area this is.
I started writing a graphical ping utility in Visual C++.NET earlier. I wanted to see what C++.NET was like so a ping utility seemed like a fairly easy project to take on. I've written some C++ programs before in Linux and also as an OS kernel, but I figured using the .NET framework would speed up development on hosted applications quite a bit. I was disturbed to find a messy header file as the core behind the graphical Windows Forms builder. It was definitely not as programmer-friendly as Visual C#.NET! But, with a little bit of "getting-used-to" I finally started searching through MSDN for ICMP-related classes and found the "Ping" class (a shockingly obvious name). I'll skip a step-by-step and cut the chase. I now have a basic ping utility that uses user-defined parameters like the reply timeout, hostname/IP (for obvious reasons), request count (how many ICMP packets to send in a row), and the packet TTL (Time-To-Live). I'll probably finish a releasable version later today and try to seek some feedback on it for fixing/upgrading.
I posted a Windows Sidebar Gadget I made yesterday to Windows Live Gallery (direct link). It already has ~70 downloads yet not a single review. I'd really like to know if the thing works properly on other people's computers!
Hopefully at this rate, I'll be able to code a new application every 2-3 days to build up the projects page of my website. That's all for now.
Stay Tuned,
Josh
The Glorious First!
Welcome to my little corner in the vast internet!
My name is Josh Cornutt and you've probably stumbled upon this blog after viewing my website (http://joshcornutt.homedns.org)... and if not, GO THERE!
No seriously... check out my website!
Anyways, I'm a fairly normal person once you look past all of my oddities. I am currently (financially) scraping by in this warped economy. I do freelance website development and fix local people's computers for cash but that is hardly a decent salary.
Some of my many hobbies include: Operating System development, C#/C++/ASP.NET programming, skateboarding, making trance/techno, and burning out thousands of brain cells in front of the TV.
Well, now you know everything about me... until I reveal more in later posts!
Stay Tuned,
Josh
My name is Josh Cornutt and you've probably stumbled upon this blog after viewing my website (http://joshcornutt.homedns.org)... and if not, GO THERE!
No seriously... check out my website!
Anyways, I'm a fairly normal person once you look past all of my oddities. I am currently (financially) scraping by in this warped economy. I do freelance website development and fix local people's computers for cash but that is hardly a decent salary.
Some of my many hobbies include: Operating System development, C#/C++/ASP.NET programming, skateboarding, making trance/techno, and burning out thousands of brain cells in front of the TV.
Well, now you know everything about me... until I reveal more in later posts!
Stay Tuned,
Josh
Subscribe to:
Posts (Atom)
