<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The more important question is: why would you want to do that?  What problem are you trying to solve?</blockquote>

<div><br></div><div>As weird as it sounds, I'm looking for multiplatform assembly languages. I want to learn assembly, but I want my knowledge and code to carry over no matter which operating system I'm using. I regularly use Windows, Mac, and Linux, and I don't want to have to rewrite my codebase every time I boot into another operating system.</div>

<div><br></div><div>I can do this by writing assembly code that calls C functions, but I get the distinct feeling: <i>Why am I doing it this way? Why not just write in C?</i> And there's only so much assembly you can learn by calling C functions, instead of writing lower level code.</div>

<div><br></div><div>I understand that OS's have different conventions for I/O, but what I don't understand is why multiplatform assembly languages like LLVM, NASM, YASM, FASM, and Gas don't give coders an macro or instruction set that gets expanded to the actual, per-OS instructions during assembly. I guess it lowers development efforts to reuse libc rather than add multiplatform I/O assembly macros. Smaller, non-libc dependent binaries don't matter in a world with hefty hard drives.</div>

</div>