Slashdot Mirror


Behind Menuet, an OS Written Entirely In Assembly

angry tapir writes "MenuetOS is an operating system written entirely in assembly language. As a result it's extremely quick and compact (it can even fit on a floppy disk, despite having a GUI). It can run Quake. Two of the developers behind MenuetOS took time out to talk about what inspired them to undertake the daunting task of writing the operating system, the current state of Menuet and future plans for it."

419 comments

  1. From the license... by damburger · · Score: 5, Funny

    3) Redistribution, reverse engineering, disassembly or decompilation prohibited without permission from the copyright holders.

    Are you sure they wrote the entire thing in assembly language?

    --
    If we can put a man on the moon, why can't we shoot people for Apollo-related non-sequiturs?
    1. Re:From the license... by Anonymous Coward · · Score: 2, Informative

      Point one: assembly languages are compiled (from a human readable text file to a machine-readable object file). Did you think they wrote it in hex?

      Point two: it's therefore possible to decompile it.

    2. Re:From the license... by damburger · · Score: 5, Informative

      That would be disassembly, which they already mentioned separately as being prohibited. Putting "Point one" and "Point two" in front of clearly incorrect statements doesn't improve anything.

      --
      If we can put a man on the moon, why can't we shoot people for Apollo-related non-sequiturs?
    3. Re:From the license... by buddhaunderthetree · · Score: 3, Insightful

      Yeah I wonder about why they chose that particular license. I mean it's not a commericially viable product, and if it's meant to spur research and development then why not chose some sort of free software license.

      --
      "Technology.....the knack of so arranging the world that we don't have to experience it." Max Firsch
    4. Re:From the license... by Big+Hairy+Ian · · Score: 1

      Did you think they wrote it in hex?

      Why not it's how I started writing Machine Code

      --

      Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

    5. Re:From the license... by damburger · · Score: 2, Insightful

      What puzzles me (apart from the amusing bit about decompiling something that was never compiled) is the prohibition on disassembly. Given the pretty much trivial mapping between assembly mnemonics and the actual binary files they distribute, it seems a silly thing to prohibit.

      --
      If we can put a man on the moon, why can't we shoot people for Apollo-related non-sequiturs?
    6. Re:From the license... by Desler · · Score: 1

      No, the process you describe is referred to as disassembling. Decompiling has a connotation of going from the compiled asm code in an executable back to the original source code in a higher level language.

    7. Re:From the license... by Anonymous Coward · · Score: 0

      assembly languages are assembled, compiled languages are compiled

    8. Re:From the license... by Anonymous Coward · · Score: 1, Informative

      Hm. No. You're assuming a particular reading of their licence: that by saying "disassembly or decompilation" they are implying that there is assembler and higher level language, rather than "disassembly or decompilation" meaning "reversing it, whichever term you prefer".

      Furthermore, disassembly is a basic stage of decompilation, and they may also be saying "you aren't allowed to produce C from it", which is usually possible even if it wasn't written in that language. C code can be created by code generation tools from the product of disassemblers.

    9. Re:From the license... by pentalive · · Score: 2, Insightful

      Why do you think "Task is easy to do" has anything to do with "The author and rights holder does not wish it done" ?

      Just because a thing is easy to do does not mean one automatically has some right to do it.

    10. Re:From the license... by damburger · · Score: 3, Interesting

      Because it would be like banning you from remembering (not even speaking) dialogue you remember from a movie. Its inane.

      --
      If we can put a man on the moon, why can't we shoot people for Apollo-related non-sequiturs?
    11. Re:From the license... by Anonymous Coward · · Score: 0

      IDA Plugins such as hex-rays will take an assemblydump and transform it into some readable C code... Thus decompiling.

    12. Re:From the license... by BlueKitties · · Score: 1

      No no no, decompilation is taking binaries and turning them into a high level, human readable language. When we disassemble, we're turning it into assembly, when we decompile, we're turning it into a higher level language (e.g. see: Boomerang.) Usually, decompiling is nearly impossible and sometimes pointless (considering you lose comments, optimizations can cause fuggly code when reversed, etc.) Still, you can decompile something that wasn't even actually compiled.

      --
      "Sorrow is better than laughter, for by sadness of face the heart is made glad." [Ecclesiastes 7:3]
    13. Re:From the license... by gbjbaanb · · Score: 3, Funny

      Hex? You had it easy.

      I had to flip switches on a front panel, in binary.

      Though come to think of it, when I was a child I had a 'computer' that was programmed by putting wires into holes in a breadboard. So.. binary, pah! I had it easy...

    14. Re:From the license... by fractoid · · Score: 1

      Well I don't want you taking that bowl of delicious fried noodles I sold you, tasting them, and deducing what ingredients I used.

      Doesn't give me the right to stop you, though.

      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    15. Re:From the license... by JiffyPop · · Score: 1

      Oh no. Now you get to be hammered by the pedantic amongst slashdot crowd. They will explain the difference between assembly language and machine code for you...

    16. Re:From the license... by Rockoon · · Score: 3, Insightful

      Decompiling never results in the original source code.

      I think only a few of the responders have a firm grip on the distinction between decompilers and disassemblers.

      The true distinction is not on the input to these programs, but instead on their output. You can feed a good decompiler some white noise and still get some high level source code.

      --
      "His name was James Damore."
    17. Re:From the license... by Amouth · · Score: 1

      why would it not be a commericially viable product?

      also if they just stuck it out there for anyone to fork off and do what they want with it - then they can quickly remove any chance of it being commericially viable.

      It's impressive work - let them share it how they want.

      --
      '...if only "Jumping to a Conclusion" was an event in the Olympics.'
    18. Re:From the license... by miffo.swe · · Score: 2, Funny

      Thats nothing, when i was a child i had a calculator that was a pile of pebbles. By putting them in different piles i could count different types of objects at the same time.

      --
      HTTP/1.1 400
    19. Re:From the license... by FlyByPC · · Score: 2, Interesting

      Did you think they wrote it in hex?

      Why not it's how I started writing Machine Code

      Programming in hex, compared to just clicking a "compile" widget on a toolbar, feels a lot more like "programming." It's fun to toggle in a program byte by byte and see it run -- even on a slowed-down Z80.

      --
      Paleotechnologist and connoisseur of pretty shiny things.
    20. Re:From the license... by FlyByPC · · Score: 1

      What puzzles me (apart from the amusing bit about decompiling something that was never compiled) is the prohibition on disassembly. Given the pretty much trivial mapping between assembly mnemonics and the actual binary files they distribute, it seems a silly thing to prohibit.

      Driving 90 miles per hour on a city street is reasonably trivial to do as well, but there are reasons that it's illegal. The GP had more of a valid point about the philosophy -- technical ease or difficulty doesn't have that much to do with it. Yes, disassembly is a lot easier than decompiling (and for that matter, you can "decompile" machine code whether or not it ever was compiled). The $HighLevelLanguage code you produce will no doubt look ugly, but if the decompiler is written well, it will work.

      --
      Paleotechnologist and connoisseur of pretty shiny things.
    21. Re:From the license... by TheLink · · Score: 1

      Yeah, just because it's easy to say/write "I don't allow you to do this" or "You must do this if you use this program" doesn't automatically mean it is illegal to go against your wishes. Or that your wishes should be supported and enforced by a Court.

      --
    22. Re:From the license... by damburger · · Score: 1

      Pisspoor analogy. Driving at 90mph on a city street can be legislated against without invasion of privacy (its a *city* street and the speed limit is there to regulate a public space)

      --
      If we can put a man on the moon, why can't we shoot people for Apollo-related non-sequiturs?
    23. Re:From the license... by OwnedByTwoCats · · Score: 2, Insightful

      why would it not be a commercially viable product?

      Tiny User Base. So there's no incentive to be a developer for the platform. Doesn't support UNIX/POSIX standards, so it's not easy to port existing software to the platform. Freely available OSs have orders of magnitudes more users and developers, and far more reference material making them easier to learn. Who cares about fitting on a 1.4 MB floppy when 1 GB USB drives are practically free?

    24. Re:From the license... by gt6062b · · Score: 2, Funny

      So Johnny 5 didn't want to be turned into assembly code?

      Can't blame him, I wouldn't want that either.

    25. Re:From the license... by moranar · · Score: 1

      You mean the 'good programmer reading client's spec' decompiler?

      --
      "I think it would be a good idea!"
      Gandhi, about Internet Security
    26. Re:From the license... by crmartin · · Score: 1

      Well, no. Assemblers are translated, but not compiled.

    27. Re:From the license... by kyofunikushimi · · Score: 1

      Or like publicly playing covers of simple songs? Or redrawing a simple logo and using it for your own purposes? The copyright is still there. Without the license, you wouldn't (legally) be able to do ANYTHING with this.

      --
      oo
    28. Re:From the license... by __aaxwdb6741 · · Score: 5, Insightful

      You are all incorrect in assuming that legalese (should|can|does|will) make any sense from a technical point of view.

    29. Re:From the license... by chillywillycd · · Score: 1

      i beg to differ, that it's not a commercially viable product.
      i definitely see a market for a tiny OS to run on embedded x86 devices...

    30. Re:From the license... by yesteraeon · · Score: 5, Insightful

      So if I find a book lying in the street can I pick it up and read it, or do I need to call the publisher to get a license? I think you're overstating the scope of copyright just a *tad*.

    31. Re:From the license... by hesiod · · Score: 1

      Driving at 90mph on a city street can be legislated against without invasion of privacy

      So laws that say you are not allowed to disassemble someone else's code are an invasion of your privacy?

    32. Re:From the license... by pyster · · Score: 2, Interesting

      Commodore users were used to machine language monitors, where you could switch from hex, to binary, to ascii, to assembly. Assembly on this level is machine language, and anyone who says different is just an idiot. Its not compiled, it is just ran by executing a particular memory location. JSR = 20 = 32 = " " = 100000. Some of the better ML monitors actually displayed the opcodes with asm code. http://www.atariarchives.org/mlb/chapter1.php - this book points these facts out very clearly. Pretty much making them all the same low level languages. Now, when you start to use psudo ops, lables, variables, libraries, self relocating code, ect... its not on the same low level, but is still low level.

    33. Re:From the license... by hot+soldering+iron · · Score: 1

      Unless they used a process like Randall Hyde teaches, High Level Assembler (HLA). Art of Assembly Language Home Page

      --
      When you want something built, come see me. If you want correct grammar and spelling, get a F*ing liberal arts student.
    34. Re:From the license... by GreatBunzinni · · Score: 4, Interesting

      If you had read the article you would know that they adopted FASM as their language/compiler, which offers features such as macros. As soon as you are producing source code files to be processed by programs whose work goes beyond simply mapping your instructions to machine code then we are no longer talking about assemblers. As soon as your code starts relying on features such as macros, libraries and other high-level abstractions then we have entered firmly in compiler country. After all, just because you name something as "assembly" it doesn't mean that the step between writing code and generating object code doesn't have a lot of abstraction in between. Just think of HLA for example.

      --
      Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
    35. Re:From the license... by TheRaven64 · · Score: 1

      Decompiling never results in the original source code.

      No, decompiling is never guaranteed to result in the original source code. Compiling is a lossy procedure and a decompiler fills in the gaps based on heuristics. If these heuristics match the ones used in writing the original program, then the result will be the original source code. Good decompilers take into account coding and variable naming conventions, as well as debugging and linker symbols, and so can sometimes give character-for-character the original source code. It's not common, however.

      --
      I am TheRaven on Soylent News
    36. Re:From the license... by TheRaven64 · · Score: 3, Insightful
      Fitting onto a 1.44MB floppy is useful in some embedded contexts, because it means that it will also fit onto a small ROM chip or possible the on-die flash in a microcontroller. Unfortunately, being written entirely in x86 assembly disqualifies it from any such situation.

      I played with Menuet a year or so ago, and it is very impressive how much they've squeezed into such a small space. It boots almost instantly with a responsive GUI and a number of applications. It's not so impressive, however, when you compare it to something like RiscOS, which did the same thing on a 25MHz ARM2 with 1MB of RAM, or comparable operating systems of the time. It does highlight how poor an effort DOS was (although it requires protected mode, so won't run on anything before an 80386), but I think we already knew that.

      --
      I am TheRaven on Soylent News
    37. Re:From the license... by GIL_Dude · · Score: 5, Funny

      That must have sucked when they had a heap overflow. Someone could also step on them and seriously flatten the stack. I guess if there were too many, you could always throw the exceptions at someone, huh?

    38. Re:From the license... by norminator · · Score: 4, Funny

      I had to use butterflies:

      I opened my hands and let the delicate wings flap once. The disturbance ripples outward, changing the flow of the eddy currents in the upper atmosphere. These cause momentary pockets of higher-pressure air to form, which act as lenses that deflect incoming cosmic rays, focusing them to strike the drive platter and flip the desired bit.

      *shamelessly stolen from XKCD

    39. Re:From the license... by ae1294 · · Score: 1

      Uhhh no sadly he isn't... Just because it seems absurd doesn't make it less true...

    40. Re:From the license... by damburger · · Score: 1

      Yes, because that disassembly would be done on my computer, evidence of my doing so could not be obtained from outside my house and my computer, and as such enforcing it would require the government to break down my door without any evidence of wrongdoing on my part. It is actually pretty straight forward if you bother to engage your brain rather than parroting some bit of truthiness you've picked up.

      --
      If we can put a man on the moon, why can't we shoot people for Apollo-related non-sequiturs?
    41. Re:From the license... by kyofunikushimi · · Score: 0

      I suppose that is a legal grey area. If the author has not given you permission to read it, who's to say? Would likely have to let a court decide. If you find a book in the street and choose to translate it to a language you find to be more readable... well, that is POSSIBLY okay under fair use guidelines depending on a host of other factors (and once again, a court would have to decide if it actually qualified as fair use). But strictly speaking... you can't do that.

      --
      oo
    42. Re:From the license... by m.ducharme · · Score: 3, Funny

      For those of you not interested in following the link...there's an Emacs command for that.

      --
      Rule of Slashdot #0: You and people like you are not representative of the larger population. - A.C.
    43. Re:From the license... by jellomizer · · Score: 1

      It could be commercially viable. Imbedded systems, Running High Performance Simulations, etc...
      They want control over their program and don't want other people mucking about it that they don't want.
      They don't want someone else to make it Commercially Viable and make a pant load of money from their work.
      There are a lot of reasons. Not everyone is a fan of Open Source especially the GNU. You really can't expect everyone to Like Open Source or the GNU.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    44. Re:From the license... by Anonymous Coward · · Score: 0

      As soon as you are producing source code files to be processed by programs whose work goes beyond simply mapping your instructions to machine code then we are no longer talking about assemblers.

      Correct. And then we're also talking about information that can't be recovered by decompiling binaries, so the point is moot.

    45. Re:From the license... by SteeldrivingJon · · Score: 1

      "Did you think they wrote it in hex?"

      I was hoping they did it using toggle switches.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    46. Re:From the license... by j-stroy · · Score: 1

      Heard of a computer at SFU BC that was called "pig fucker" since it was programmed by setting the bits, then pressing "enter" I think all it had was a "run" and a "stop" button too. Rack mount of 3 components, power supply with beer can size caps, the data entry component and the CPU. It collected data well, so it was used for years... had to be re-programmed each time it was turned off tho... could never figure out why they didn't swap the buttons for relays and serial port it, but I guess the operator liked hating it more.

    47. Re:From the license... by tlhIngan · · Score: 2, Informative

      What puzzles me (apart from the amusing bit about decompiling something that was never compiled) is the prohibition on disassembly. Given the pretty much trivial mapping between assembly mnemonics and the actual binary files they distribute, it seems a silly thing to prohibit.

      You lose a lot on a disassembly though.

      Comments for one, and non-public symbols for another (including stuff like variable names, structure names and composition, etc), plus any oddball globals referenced through a base pointer. You lose enough that the disassembly is hard to look at, and this is stuff you lose with a basic 2-pass assembler.

      More advanced assemblers include functionality like macros, call handling (write stuff like "function do_something(param1, param2, param3)", "call do_something(r0, local_variable, constant)", and "return blah" and the assembler sets up the callstack, figures out a place for the the locals, etc), even conditionals (write "if (variable > something)" than a series of compare/test and branch instructions) and structure support. Often called "high-level assembly" because it ends up appearing a mix of assembly and C. Far more advanced than the basic 2-pass, but less advanced than a full-fledged C compiler. It's a great way to generate entry points that are architecture ABI compliant, while for the fast call stuff you can use your normal branch instructions.

    48. Re:From the license... by Anonymous Coward · · Score: 0

      Did you think they wrote it in hex?

      Why not it's how I started writing Machine Code

      Machine Code is not Assembly Language. Machine Code does not need to be compiled, Assembly does.

    49. Re:From the license... by mR.bRiGhTsId3 · · Score: 2, Insightful

      I'm going to go out on a limb and say they re-used the license that was initially written with higher-level languages in mind. It prohibits 2 things they wanted to prohibit and prohibits a 3rd action that isn't possible. Why mess with a license that already says what you want.

    50. Re:From the license... by Anonymous Coward · · Score: 0

      I enjoyed thinking of HLA, but didn't see what it had to do with assembly.

    51. Re:From the license... by rlp · · Score: 1

      I had to flip switches on a front panel, in binary

      PDP-11?

      --
      [Insert pithy quote here]
    52. Re:From the license... by the_humeister · · Score: 1

      Except RiscOS only had cooperative multitasking whereas Menuet OS uses preemptive multitasking. Also Menuet OS has memory protection whereas RiscOS mostly doesn't.

    53. Re:From the license... by I'm+not+really+here · · Score: 1

      You are not allowed to smoke pot or cocaine in the comfort of your own home. This invades your privacy and yet is an accepted law.

      --
      Before commenting on the Bible, please read it first
    54. Re:From the license... by TheRaven64 · · Score: 1
      RiscOS had cooperative multitasking because it's generally faster, and if applications are well-behaved then it provides a better user experience on slow hardware. RMX had preemptive multitasking on 8080 machines (which only had 64KB of RAM), but it was designed for very different design requirements. Preemptive multitasking only became common on desktop machines when machines were fast enough that it didn't cause a noticeable overhead. RiscOS later gained preemptive multitasking via a kernel module, but by then RiscOS was hugely bloated, requiring 2MB of ROM for the OS, GUI, and applications.

      As for protected memory, RiscOS had it in the same way Linux has it. Applications have their own, isolated, unprivileged, virtual memory regions while kernel modules have access to all of physical memory. The only difference is that kernel modules were a lot more common on RiscOS.

      --
      I am TheRaven on Soylent News
    55. Re:From the license... by damburger · · Score: 0, Flamebait

      Yes, but the police need some indication your are doing it before they come for you:

      http://en.wikipedia.org/wiki/Probable_cause

      Go educate yourself.

      --
      If we can put a man on the moon, why can't we shoot people for Apollo-related non-sequiturs?
    56. Re:From the license... by Useful+Wheat · · Score: 1

      I hate to be difficult, but from what I remember in my computer science classes optimizing by hand isn't always a good idea. Unless you know exactly what you're doing and what your compiler is doing at every step in the process, the odds are good that you're going to make it slower. Indeed, I think a recent article on slashdot discussed the merits of optimization in video games and the underlying message of the author was that unless you had a routine you used literally a billion times, it wasn't worth it to write the code in assembly. Certainly writing a modern OS in assembly is interesting enough, but it seems like this is more on the level of building a bridge out of toothpicks. Something that you would do for the challenge of it, and not for any practical concern.

    57. Re:From the license... by Anonymous Coward · · Score: 0

      WIN

    58. Re:From the license... by Anonymous Coward · · Score: 0

      Courts have already decided, and you do not need explicit permission from the copyright holder to read the book, or sell it.

    59. Re:From the license... by manifoldronin · · Score: 2, Funny

      why would it not be a commericially viable product?

      also if they just stuck it out there for anyone to fork off and do what they want with it - then they can quickly remove any chance of it being commericially viable.

      It's impressive work - let them share it how they want.

      I have a feeling that the Year of the MenuetOS on Desktop is coming soon.

      --
      Tyranny isn't the worst enemy of a democracy. Cynicism is.
    60. Re:From the license... by Anonymous Coward · · Score: 0

      So regardless of the tools I use, if I link to a library, use a macro processor, that's a compiler?

      So a script that runs an m4 pass over my source and a very simple assembler that turns the resulting files into object files, and then I run link to turn a bunch of those object files into a library - that's a compiler?

      I wouldn't call it a compiler, and I wouldn't say anything was compiled. Compiler as a concept is fuzzy - how high level is high level?

    61. Re:From the license... by I'm+not+really+here · · Score: 1
      I am quite educated, and know full well that probable cause is required to search your home. But what does that have anything to do with my analogy? It doesn't!
      • I can do drugs in my own home, and they cannot search my property and arrest me without probable cause.
      • I can disassemble that code in my own home, and they cannot search my computer and arrest me for copyright infringement without probable cause (actually, it likely wouldn't be criminal charges, unless you proceeded to use the disassembled code to create a competing commercial product. More likely, it would be civil charges, but hopefully you get the point).

      Oh, and how, exactly, am I not educated? You seem to have completely missed my argument and pointed to something totally unrelated and then proceeded to insult me. Seems that someone else is in need of education - in respect and in reading comprehension skills.

      --
      Before commenting on the Bible, please read it first
    62. Re:From the license... by Anonymous Coward · · Score: 0

      Compiler as a concept is fuzzy - how high level is high level?

      This argument is just splitting hairs, anyway-- I would describe assembly as a "special case" of compilation.

    63. Re:From the license... by Khyber · · Score: 2, Interesting

      I'm already posting from MenuetOS - I've been using it for a couple of years as my 'security' option for things like pissing off people in IRC and daring people to hack my computer.

      It's nice having a machine that's pretty much untouchable because nobody knows the exact hardware you're running, nor your coding habits.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    64. Re:From the license... by Thaelon · · Score: 1

      You still have to compile (sota) assembler.

      Speaking from my experience writing PIC assembly in college anyway...

      We would write the code in assembly, then run a couple of command line programs over it to compile it into something that would actually run on the chip, then burn it to the firmware.

      The code is assembly, but it's fairly human readable, especially with comments - at least compared to actual binary code - but the CPU or chip does not run human readable assembly, it runs binary code. So yes, even though it's assembly, it has to be compiled - or at least interpreted and compacted into binary before the computer can run it.

      In short, even assembly code is still ASCII or Unicode, neither of which is particularly useful to a processor directly, so they do need some compilation-like work done before it can actually run. Even if it's not technically compilation, per se.

      Also, that's probably a pretty generic license, so it includes all sorts of legal clauses and is almost certainly over-broad.

      --

      Question everything

    65. Re:From the license... by shawn(at)fsu · · Score: 1

      It seems to me that it's more akin to posting a "No Trespassing sign" on the border of your property with out a fence or a auto garage shop saying "No customers allowed in this area". Sure it's easy to get past but don't say you were not warned.
      As said above"Just because you can do something doesn't mean you should. In this case they are telling you not to.

      --
      500 dollar reward for tip(s) leading to the arrest of the person(s) who stole my sig.
    66. Re:From the license... by Anonymous Coward · · Score: 0

      Read the article. Only the 64-bit version is under this license and it may be GPL'd.

    67. Re:From the license... by Bigjeff5 · · Score: 2, Informative

      It's copyright, not readright. The copyright limits what you can -copy-, not read.

      In this case, under the terms of the license you are free to use (i.e. "read") the program, free of charge, but as soon as you disassemble it your right to use the software is revoked. What's tricky with software, is that in the simple act of "reading" involves copying the program several times (moving it from one drive to another, loading it into ram, loading the machine code into the cpu cache, etc).

      Now, reverse-engineering is legal, so this is not much more than a CYA on their part, and an attempt to discourage the disassembly of their product. However, technically speaking, if you run it through a disassembler your right to use the software is revoked. If it went to court, though, it would probably be considered a fair use given the case-law behind reverse-engineering.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    68. Re:From the license... by Anonymous Coward · · Score: 0

      You failed to see the point. The distinction that was being made wasn't about how high level a language was. The point was where we cross the line between a compiled language (that you can say that their binaries are decompiled) and an assembly language (that you can say that their binaries are disassembled). That distinction is extremely simple and straight forward to do. If the map between the binary and the source file isn't 1 to 1 then the language's binaries may be decompiled. To put it in other words, whenever a compiler mangles the instructions described in the source code then there is a need for a decompiler. Simple as that.

    69. Re:From the license... by Bigjeff5 · · Score: 1

      I mean it's not a commericially viable product, and if it's meant to spur research and development then why not chose some sort of free software license.

      Says you, they stated in TFA that they are targeting embedded devices, where size and low-resource usage is paramount. They've got a full os+gui that runs quake (granted, not the most high-tech game) and fits on a floppy disk.

      MS DOS didn't even fit on one floppy disk, and this is way beyond DOS. It will be interesting to see where this goes, they are currently working on multithreading and networking. If it works out this could be viable for use as an "instant on" bios OS for simple things like playing DVDs or browsing the web.

      Obviously it won't replace Windows or OSX, but to say it isn't commercially viable is just a statement pulled out of thin-air.

      Also, they did use a free license - the 32bit version is free to all, and the 64bit version is free to all but commercial enterprises.

      It's not "open", if that's what you meant, but why should it be? Assembly is hard as hell, and that OS represents a lot of work by two guys, why should they give it away? Especially if they want to commercialize it eventually?

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    70. Re:From the license... by hesiod · · Score: 1

      2/10: trolling needs improvement

      Your troll is supposed to at least sound like it makes sense. Also, work on your consistency, as your next reply (probable cause) completely invalidates everything you said in this post. The two points are for the egregious and obvious use of a straw man argument, as well as insulting someone for doing the same thing you are.

    71. Re:From the license... by kyofunikushimi · · Score: 1

      Thanks for the clarification on the first part. Metaphors only carry so far and your clear description of the terms without the book metaphor were helpful.

      --
      oo
    72. Re:From the license... by gyepi · · Score: 1

      From TFA:

      The 32-bit version of Menuet was released under the GPL, but the 64-bit version uses a non-open-source licence that is free for "personal and educational use". Why did you decide to licence the 64-bit version differently? Has this had any impact on encouraging people to join the effort?

      Ville: With a completely new type of open source project, people seem to have strong opinions about what direction to take. Even up to a point when time is actually spent more with disputes than doing the actual coding. And when that happened, I decided to concentrate more on the original path of Menuet with the 64-bit version and with a new type of license. However, I don't have anything against open source or possibly opening up the Menuet64 source later. But with the current licence, I'd say the people are a bit more committed and willing to put more effort in to a new feature.

      --
      Attitudes make the difference between Space and Time: we want to MAX our temporal, and MIN our spatial extension.
    73. Re:From the license... by Shikaku · · Score: 2, Funny

      2009 is the year of the Emacs desktop!

    74. Re:From the license... by m.ducharme · · Score: 1

      And I thought the desktop was just another feature of Emacs...

      --
      Rule of Slashdot #0: You and people like you are not representative of the larger population. - A.C.
    75. Re:From the license... by jeffshoaf · · Score: 1

      That's nothing. When I was a child, I had to use a built in calculator - had to take off my shoes to count to 20 and drop my pants to count to 21. Of course, my brother could only count to 20 and a half!

      --
      Putting the "anal" back into "analyst"...
    76. Re:From the license... by Bigjeff5 · · Score: 2, Informative

      We would write the code in assembly, then run a couple of command line programs over it to compile it into something that would actually run on the chip, then burn it to the firmware.

      That's an assembler, not a compiler. Assembly language is a unified set of mnemonics that translate into machine code. For assembly language to be assembled into a binary that the machine can run, you need an assembler that assembles assembly language into machine code.

      Compiled languages (like C, C++, C#, Fortran, VB, etc) run through a compiler, which compiles the high-level language into what is the equivalent of an assembly language, before assembling it into the binary machine-readable code.

      It's called a compiler because it takes the commands you entered in the source code and compiles all the instructions necessary to execute those commands into machine readable code. In assembly, you are already writing all the instructions in machine code format, you are simply using mnemonics to make it easier. The assembler replaces the mnemonics with the correct machine instructions and away you go.

      There are also interpreted languages, like Java or Python and others, which are not compiled - they are assembled on the fly by an interpreter.

      Programming in assembly is basically removing a step in the process, and it is very hardcore as far as programming goes. The only thing more hardcore would be programming directly into machine language, which needs no assembling or compiling. Of course, if you do that your code will only work on one specific type of CPU - like the intel 80386 or the 80486 or pentium pro, etc. The machine language for each of those is slightly different, programming in assembly avoids that pitfall. Programming in a compiled language makes your program portable across hardware architectures, and interpreted languages are potentially portable across all architectures and OS's - so long as a compatible interpreter exists for a given setup.

      --
      Security is mostly a superstition... Avoiding danger is no safer in the long run than outright exposure. - Helen Keller
    77. Re:From the license... by Anonymous Coward · · Score: 0

      "I wrote an entire database program using only zeros and ones." "You had zeros? We had to use the letter "O"."

    78. Re:From the license... by salesgeek · · Score: 1

      Actually, the reason preemptive multitasking and memory protection were not implemented on old 8 bit and early 16 bit and 32 bit hardware was more basic than speed. Early CPUs simply didn't have the parts required to make preemptive multitasking work. Protected memory was not possible with most early processors. 80286 and 60030 were the first in their series with this capability. To be fair, Motorola sold an external MMU chip that gave protected memory to the earlier 68K chips. Virtual Memory support didn't exist until 80286 and 68012 processors.

      The outcome was that you could create an OS with preemptive multitasking, but without memory protection, a miscalculated pointer could affect code or data for another process (or the OS kernel). Without Virtual Memory, it was up to the programs and OS self-manage memory. I believe that the Amiga's OS was implemented this way: preemptive, but without true virtual memory and no protection which lead to some challenges for programmers. Early Xenix was that way, too.

      I got to work on 3B2 and Xenix systems, and those systems were pretty fast back then. A single CPU could handle 16-32 users all doing the usual PC stuff (word processing, accounting, billing, spreadsheets). A 286 system running in protected mode was very FAST compared to running in Real Mode (8086 compatible).

      Interestingly, until things went graphical, Microsoft's strategy was to sell Xenix as DOS's bigger more capable brother. It's too bad that licenses of Unix were $1,200 per machine as the world would look different if Unix was selling for $100 per CPU back in the mid 80s.

      --
      -- $G
    79. Re:From the license... by Anonymous Coward · · Score: 0

      Even assembly can be compiled to machine code.

      http://www.emu8086.com/assembly_language_tutorial_assembler_reference/compiler.html

    80. Re:From the license... by Dishevel · · Score: 1

      I wish this post could go to 11.

      --
      Why is it so hard to only have politicians for a few years, then have them go away?
    81. Re:From the license... by TheRaven64 · · Score: 1

      Early CPUs simply didn't have the parts required to make preemptive multitasking work

      Absolute nonsense. The only requisite for preemptive multitasking are the ability to save and restore CPU state and the ability to generate timer interrupts. These were present on the 8080 and were used by iRMX to provide preemptive multitasking, a feature that was retained when iRMX was ported to the 8086.

      Protected memory was not possible with most early processors.

      This is true. Protected memory is only possible with an MMU. It was possible to have something like protected memory with the 8086 as long as your programs only used 16-bit segment-relative addressing and did not modify the offset register, but it was not possible to enforce this. EPOC16, the forerunner of Symbian, provided semi-protected memory on the 8086 by only supporting compilers that did not emit instructions to modify the segment register - if you did, the state of the OS was undefined.

      RMX typically ran programs written in PL/M86 (one of the first language I learned) which had an address model that included segmentation and so pointer errors were much rarer (or, rather, pointer errors were just as common, but ones that trampled another process's address space were rare).

      --
      I am TheRaven on Soylent News
    82. Re:From the license... by rssrss · · Score: 1

      Only if you can find a floppy drive and a floppy. I think they are in the closet with the dead printers in the basement.

      --
      In the land of the blind, the one-eyed man is king.
    83. Re:From the license... by plnix0 · · Score: 1

      Odd, the 32-bit version is GPL.

    84. Re:From the license... by Nefarious+Wheel · · Score: 1

      I think they're just covering both sides of any potential controversy over the use of "assembly" and "compilation" that might be initiated by - oh I don't know, bastards like us slashssons and slashdottirs perhaps.

      --
      Do not mock my vision of impractical footwear
    85. Re:From the license... by Nefarious+Wheel · · Score: 2, Insightful

      Correct. And then we're also talking about information that can't be recovered by decompiling binaries, so the point is moot.

      Once you're done debugging, you don't need the symbol tables any more, yes? We may need the comfort of rich commentary and maintainability, but the system really only needs the instructions, opcodes, addresses, literals and data in the binary code to work. [Decompiled|Disassembled] stripped binaries are very hard to make sense of.

      In the olden days, we obscured code by renaming variable and constant names with some variation of "I"'s and "1"'s and "O"'s and "0"'s. Not as effective as adding the "strip symbol table" switch to the compiles, but far more fun, which mattered then. "O000O01I = o0oo0OI1" and variations were good for inducing headache. We took DRM into our own hands in those days.

      Ahh, to be a sadistic, bastard developer again. I miss that.

      --
      Do not mock my vision of impractical footwear
    86. Re:From the license... by Anonymous Coward · · Score: 0

      Decompiling never results in the original source code.

      I think only a few of the responders have a firm grip on the distinction between decompilers and disassemblers.

      The true distinction is not on the input to these programs, but instead on their output. You can feed a good decompiler some white noise and still get some high level source code.

      What are you trying to say?

      Disassembling doesn't either, it's just less abstracted from machine code than complex languages.
      I'm fairly certain you can disassemble white noise with good results as well.

      I think only a few of the responders have a firm grip on the distinction between decompilers and disassemblers.

      I'll second that...

    87. Re:From the license... by Anonymous Coward · · Score: 0

      Your penis is finger sized?

    88. Re:From the license... by Denihil · · Score: 1

      DDos attack! DDos attack! *throws a handful of pebbles at a random passerby* Ahh, memories.

      --
      WÌÌfÍ--ÍSÌÒÍ...Í...ÌHÌÍfÍÍÍ--ÍÍÍ
    89. Re:From the license... by angel'o'sphere · · Score: 1

      Point Two:
      Assembly languages are not compiled!!
      They are translated by an "assembler" hence the name of the languages.

      A compiler is a completely different kind of beast, and languages that are compiled a quite a bit more complex than assembly.

      angel'o'sphere

      P.S. you don't decompile a binary if you want to see the "machine code" you disassemble it.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    90. Re:From the license... by _merlin · · Score: 1

      More likely it was a PDP-8 as you usually booted a PDP-11 from DECtape. On the other hand, it could've been a hobbyist kit computer, like an Altair.

    91. Re:From the license... by EricTheO · · Score: 1

      Oh yeah? Well when I was young I had a computer that ran on marbles and gravity like a Pachinko machine.

      --
      -Eric
    92. Re:From the license... by Anonymous Coward · · Score: 0

      If the logo is a trademark, then it is not covered by copyright laws, but is covered by trademark laws.

    93. Re:From the license... by DaVince21 · · Score: 1

      But prohibiting it just tempts more people to actually do it.

      --
      I am not devoid of humor.
    94. Re:From the license... by Anonymous Coward · · Score: 0

      Actually, they haven't. [Capitals for emphasis]

      First of all, finding a book and reading it is NOT infringing copyright as you are not making a copy of the book.

      Playing covers of songs without a 1. license or 2. written permission from the copyright holder (in effect a license of sorts) or 3. the songs being in public domain, is copyright infringement.

      Redrawing a logo will depend on what the logo is. If it is a trademark, like the Nike logo, then it is NOT copyright infringement, as Trademarks are considered different and it's a TRADEMARK infringement. (And you might even land a 'fraud' case in there if they believe you were trying to pass yourself off as the company or a representative of the company, or some merchandise as having been manufactured by the company).

      If the logo is not a Trademark and is copyrighted by a company and you copy it, it is copyright infringement.

      Copyright internationally is automatically granted as soon as a work comes into existence. It is owned by the creator/s of that work (though proving this is often difficult in some cases).

      The US of A uses the Library of Congress for copyright registration, which helps in legal disputes, but isn't used for the granting of copyright (which is automatic). However, they do require works created in the USA to get registered.

      As such, the parent is correct in the fact that without the license (or a license of sorts) you would legally not be allowed to use the OS. [The OS loading into your RAM is in effect making a copy - thus copyright infringement]. The only other way you could use it is if the copyright holders released it into public domain, which they haven't.

    95. Re:From the license... by meowhous · · Score: 1

      What is this mythical "client spec" of which you write? Do they really exist?

    96. Re:From the license... by pentalive · · Score: 1

      Straw man argument.

      If you find a book, where ever and you keep it you might be stealing it from whoever dropped it, but you are not copying it, so no you did not violate copyright.

      A friend can still buy a CD and even if they play it for a year, give it to you.

      In either case there is no copy being made. Now if you find a book on your friend's bookshelf and go down to Kinko's and photocopy the whole thing, you have violated copyright.

    97. Re:From the license... by pentalive · · Score: 1

      Actually, If it is clear before I purchase the noodles and you can prove you made it clear, then yes you may be able to stop me from describing your noodle dish.

      On the other hand, If I were to enter a restaurant and see a big sight that said I can't talk about the restaurant to anyone or about it's food, then I might just leave without buying any.

    98. Re:From the license... by Anonymous Coward · · Score: 0

      Actually, If it is clear before I purchase the noodles and you can prove you made it clear, then yes you may be able to stop me from describing your noodle dish.

      Are you serious? O.o I've never seen a 'no reverse engineering' sign on the wall of a restaurant. I'd be astounded if anyone (besides maybe Coca-Cola - now that'd be an interesting test case) would sue if you took their product to a lab and isolated every compound in it.

    99. Re:From the license... by smartbei · · Score: 1

      ...Nothing a find and replace wouldn't solve.

    100. Re:From the license... by Anonymous Coward · · Score: 0

      I had to use butterflies:

      I opened my hands and let the delicate wings flap once. The disturbance ripples outward, changing the flow of the eddy currents in the upper atmosphere. These cause momentary pockets of higher-pressure air to form, which act as lenses that deflect incoming cosmic rays, focusing them to strike the drive platter and flip the desired bit.

      *shamelessly stolen from XKCD

      Of course,

        Real programmers set the universal constants at the start such that the universe evolves to contain the disk with the data they want.

      *shamelessly stolen from the same XKCD. (Hover the mouse over the comic...)

    101. Re:From the license... by pentalive · · Score: 1

      yes but there are non-disclosure agreements for other things and they are enforceable.

    102. Re:From the license... by Dutch+Gun · · Score: 1

      I hate to be difficult, but from what I remember in my computer science classes optimizing by hand isn't always a good idea. Unless you know exactly what you're doing and what your compiler is doing at every step in the process, the odds are good that you're going to make it slower. Indeed, I think a recent article on slashdot discussed the merits of optimization in video games and the underlying message of the author was that unless you had a routine you used literally a billion times, it wasn't worth it to write the code in assembly. Certainly writing a modern OS in assembly is interesting enough, but it seems like this is more on the level of building a bridge out of toothpicks. Something that you would do for the challenge of it, and not for any practical concern.

      I think I'd agree with that assessment. In the commercial games I've worked on, assembly was used in only a few key spots, and almost always were deep in the engine code, such as vector or matrix operations, conversion routines, or things like that. There are some other cases where compilers will just generate plain suboptimal instruction sequences, so some judicious use of inline asm can help, but even that's fairly rare these days. More often than not, large-scale applications (like games) benefit more from algorithmic and structural optimizations rather than assembly programming.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    103. Re:From the license... by Anonymous Coward · · Score: 0

      What is this mythical "client spec" of which you write? Do they really exist?

      "client specs" are a quantum phenomenon. While sometimes useful in the art of programming, they are difficult to use correctly since observing them will cause them to instantaneously change.

    104. Re:From the license... by Anonymous Coward · · Score: 0

      Disassembling is probably what the lawyer types mean when they say decompilation.

    105. Re:From the license... by Nefarious+Wheel · · Score: 1

      ...Nothing a find and replace wouldn't solve.

      Nothing a few hundred find and replace's wouldn't solve, for sure. But the platform was General Automation GA16/440 Fortran II and we didn't have Perl back then (or any decent command language, for that matter). Editing itself was rather painful.

      Don't make any mistakes...

      --
      Do not mock my vision of impractical footwear
  2. yea but by Anonymous Coward · · Score: 0

    does it run linux?

  3. But by rodrigoandrade · · Score: 3, Funny

    Does it run Linux?

    Oh wait...

    1. Re:But by Waveguide04 · · Score: 1

      Does it run in vmware? :) Does hand written assembly run as well on a virtualized platform? ;)

    2. Re:But by DaVince21 · · Score: 1

      Maybe if you can get a virtual machine to work on it!

      --
      I am not devoid of humor.
  4. What! by jozmala · · Score: 2, Funny

    It seems their webserver isn't written in assembler.

    --
    ©God :Copyright is exclusive right for creator to determine the use of his creation.
    1. Re:What! by moro_666 · · Score: 1, Insightful

      but i am ..

      copied from the linked page

      ~~ snip ~~

      Modern operating systems are written predominately in high-level languages like C and C++. Menuet, however, is written entirely in assembly language: a symbolic representation of machine language. These days many programmers have minimal if any contact with assembly language, but that hasn't deterred the Menuet development team and the result is a slick, compact and super-quick
      operating system.

      Two of the Menuet developers, Ville Turjanmaa and Madis Kalme, took time out to talk to PC World Australia about what inspired them to undertake the daunting task of writing the operating system, the current state of the OS and future plans for it.

      Firstly, what inspired the creation of MenuetOS? Most people would consider writing an entire operating system in assembly language to be a pretty audacious project.

      Ville: The original idea for assembly OS came a few years ago when I was browsing the Internet and came across to a page which used a scripting language. And even with my relatively new computer, the short script executed quite slowly. So it seemed like there will always be the need to create a language which uses the last cycles from a new CPU. So I decided to go to the other extreme
      end and just use assembly as much as possible.

      Can you give me some idea of the backgrounds of the core developers? Do you have people contributing from outside the core team?

      Madis: My passion has always been assembly language. As a teenager I started with some programmable calculators where ML [machine language] was the only way to go. Compared to that, assembly is really a breeze and such an elegant way to program.

      Menuet

      Ville: We come from different countries and with different backgrounds, but most of us core developers have a university background. I've used different programming languages during the last 30 years. From BASIC and Pascal, to C and assembly. And yes, there are people contributing from outside the core team; the MP3 player is one such contribution.

      What aspect of Menuet are you most proud of? Are there any parts of the OS that were particularly challenging to code?

      Madis: I am very excited about the GUI part because most hobby operating systems go as far as implementing only a command-line type of OS, but with a true-colour, VESA-supported GUI, it differs from all of these and therefore its ideal for games and small graphical demos. The 64-bit register extensions helped me to make a register-only line and circle routines and these I consider my
      "u-achievements" that I can be proud of. "Challenging to code?" - I will let Ville answer that

      Ville: As for the actual coding, I'm most pleased with pre-emptive scheduling and USB support. Maybe we have also made a small difference to mindsets about what can be done with assembly language.

      What next for Menuet? Do you have a timeline for getting to version 1.0? Are there any features coming up that you're especially proud of?

      Ville: We need to add new drivers and improve existing applications. Other than that, there are one or two completely new features I'd like to add before hitting the 1.0 mark.

      The 32-bit version of Menuet was released under the GPL, but the 64-bit version uses a non-open-source licence that is free for "personal and educational use". Why did you decide to licence the 64-bit version differently? Has this had any impact on encouraging people to join the effort?

      Ville: With a completely new type of open source project, people seem to have strong opinions about what direction to take. Even up to a point when

      --

      I'd tell you the chances of this story being a dupe, but you wouldn't like it.
    2. Re:What! by Anonymous Coward · · Score: 0

      Netcraft reports that their website runs Windows 2003. And it's been slashdotted.

    3. Re:What! by ae1294 · · Score: 1

      From BASIC and Pascal, to C and assembly.

      Yeaaa he mentioned my favorite language PASCAL!!!!

      I decided to concentrate more on the original path of Menuet with the 64-bit version

      I see nothing wrong with this... they are writing this OS in assembly for god-sakes let the guy make sure it gets done the way he wants it. If people want to help out then great, there's no reason to bitch about it.... O wait.. this is /. there is always a reason to bitch about someone DOING something cool unless he does it the WAY you want him too... Gezzz people come on....

  5. It's not FOSS? by Nursie · · Score: 3, Insightful

    It's free as in beer, AFAICT, but not open. That seems strange to me.

    1. Re:It's not FOSS? by Anonymous Coward · · Score: 5, Informative

      for anyone wanting to tinker - it had been forked before they closed it
      http://wiki.kolibrios.org/
      http://www.kolibrios.org/?p=SVN&kind=dir&loc=/kernel/trunk

    2. Re:It's not FOSS? by rascher · · Score: 1

      Yeah. This would be really cool and interesting, but without the source code its pretty much impossible for me to gain any technical insight.

    3. Re:It's not FOSS? by BlueKitties · · Score: 1

      Wait, it was forked, as in there was community interest, and the buggars just shut it down? Imagine what today's world would be like if Linus had gotten pissed when people started working with the Linux Kernel.

      --
      "Sorrow is better than laughter, for by sadness of face the heart is made glad." [Ecclesiastes 7:3]
    4. Re:It's not FOSS? by Anonymous Coward · · Score: 0

      It's free as in beer, AFAICT, but not open. That seems strange to me.

      Only for personal and educationlal uses. Commercial it costs money; which in today's World with so much going to hand held devices, a small OS like this is a very interesting idea.

      So, to use your beer analogy, you can drink the beer free at school or at home, but you'll have to pay for it to drink the beer at work.

    5. Re:It's not FOSS? by arndawg · · Score: 5, Funny

      Imagine what today's world would be like if Linus had gotten pissed when people started working with the Linux Kernel.

      I'm guessing the population in the western world would be higher.

    6. Re:It's not FOSS? by Nursie · · Score: 2, Funny

      There's always some smart-arse coming up with reasons to disallow free beer at work, dammit.

    7. Re:It's not FOSS? by DigitalLogic · · Score: 0, Redundant

      Thanks for that information. :-) I did not know this existed, now I am extremely interested.

    8. Re:It's not FOSS? by Barny · · Score: 1

      I hope that is sarcasm, I really do.

      Good work if it was, zomg if it wasn't.

      --
      ...
      /me sighs
    9. Re:It's not FOSS? by Anonymous Coward · · Score: 0

      I'm guessing the population in the western world would be higher.

      You don't realize how popular Linus has become with the female geeks, do you?

    10. Re:It's not FOSS? by Anonymous Coward · · Score: 0

      It is this way so that they can protect their sofwtare from being subverted/perverted by people who can't understand concepts such as this.

    11. Re:It's not FOSS? by pete_norm · · Score: 3, Funny

      All 5 of them?

    12. Re:It's not FOSS? by just_another_sean · · Score: 1

      It's more secure that way, natch! ;-)

      --
      Creationist Textbook Stickers Declared Unconstitutional by CowboyNeal
    13. Re:It's not FOSS? by CubicleView · · Score: 1

      I don't follow, are you saying that if people weren't allowed to work on the kernel that they'd have more time for sex, or that Linus would have fathered alot of children while he was pissed (or f**ked drunk to anyone unfamiliar with the slang)?

    14. Re:It's not FOSS? by MarkGriz · · Score: 1

      "are you saying that if people weren't allowed to work on the kernel that they'd have more time for sex"

      Yeah, I don't think having more "time" for sex would necessarily be helpful in this instance.

      --
      Beauty is in the eye of the beerholder.
    15. Re:It's not FOSS? by RiotingPacifist · · Score: 1

      How much embedded stuff do you know that is using X86/X86_64?

      This project seams pretty pointless, given that modern compilers are pretty good at converting C to efficient assembly (especially for X86) and there are a fair few high efficiency OSs. The primary value i can see in a project like this is publicity (i.e im soo hardcore i can do an OS in assembly) and education, both are better served by an open license (and they can fork and sell the ARM port under any if they are smart about it)

      --
      IranAir Flight 655 never forget!
  6. Stupid license. No thanks. by Desler · · Score: 4, Insightful

    Menuet64 Copyright (c) 2005-2009 Ville Turjanmaa

    1) Free for personal and educational use.
    2) Contact menuetos.net for commercial use.
    3) Redistribution, reverse engineering, disassembly or decompilation prohibited without permission from the copyright holders.

    Probably won't gain much steam with a license like that. Enjoy your obscurity and 3 users.

    1. Re:Stupid license. No thanks. by damburger · · Score: 5, Insightful

      More to the point, the prohibition on disassembly makes it impossible to independently verify their claim it was written in assembly language without violating their license, and that claim is central to the idea of this being an interesting research project.

      --
      If we can put a man on the moon, why can't we shoot people for Apollo-related non-sequiturs?
    2. Re:Stupid license. No thanks. by i.r.id10t · · Score: 1, Interesting

      Of course, if they had to integrate Quake with the OS parts, then wouldn't the OS also fall under the GPL like the quake source?

      --
      Don't blame me, I voted for Kodos
    3. Re:Stupid license. No thanks. by mdwh2 · · Score: 2, Insightful

      No software got popular with such a restrictive licence! Heaven forbid they give it away free for personal use, all the most popular OSs are free for all!

      (I don't disagree with you that it might seem a pointless licence, depending on what their plans for it are, but I don't think this has much relevance to popularity.)

    4. Re:Stupid license. No thanks. by Desler · · Score: 4, Insightful

      No software got popular with such a restrictive licence! Heaven forbid they give it away free for personal use, all the most popular OSs are free for all!

      The only non-free OSes that have have actually been used by more than 5 people actually provided more features than "Can play a 13 year old game fast".

      (I don't disagree with you that it might seem a pointless licence, depending on what their plans for it are, but I don't think this has much relevance to popularity.)

      Actually it does. Since this is clearly not a commercially viable OS the only segment of the population that might possibly use it would be tinkerers in the FOSS crowd, but they are going to be turned off by the license. There is really no viable reason to run the OS if you aren't allowed to tinker with the source code.

    5. Re:Stupid license. No thanks. by Wooky_linuxer · · Score: 1

      I don't think they did that. Quake was probably compiled as an executable with some changes to allow it to run in their OS. No I didn't RTFA, but I tried to browse their site and it is slashdotted. Perhaps their webserver run on Menuet as well?

      --
      Where is that guy who'd die defending what I had to say when I need him?
    6. Re:Stupid license. No thanks. by Anonymous Coward · · Score: 0

      You're an idiot. Just look at their screenshots page. It's SDL Quake. They probably did some minimal changes and then just recompiled it. Any OS that requires Quake to be "integrated with its parts" as you put it is a pretty shitty OS.

    7. Re:Stupid license. No thanks. by geckipede · · Score: 3, Insightful

      A far more serious issue in gaining popularity for this project is going to be hardware support. I've actually tried this OS, and discovered that if you cram everything into one floppy disc, there isn't much room left for a range of drivers. I'm fairly sure that this thing was designed and written to work on the developer's own computer, and practically nothing else.

    8. Re:Stupid license. No thanks. by houghi · · Score: 1

      I indeed would rather see something like:
      I'm doing a (free) operating system (just a hobby, won't be big and professional like Linux) for PCs.
      and then see what happens

      --
      Don't fight for your country, if your country does not fight for you.
    9. Re:Stupid license. No thanks. by MBGMorden · · Score: 1

      IIRC, though Menuet itself is written in assembly, it has standard compilers and other development tools available to develop userspace applications on. Quake was likely just ported much like it was to any other platform.

      Truthfully, though neat as a "Gee whiz" type of thing, I just don't see much practical application for Menuet. Linux is where most practical FOSS desktop development is at - FreeBSD is probably second in invested time but similar enough in scope/purpose that I doubt it will ever differ much from Linux. The only interesting possibilities I see are Haiku, Syllable, and ReactOS.

      --
      "People who think they know everything are very annoying to those of us who do."-Mark Twain
    10. Re:Stupid license. No thanks. by Kjella · · Score: 1

      What, you mean up from 2 users? Haven't we already learned by the Linux-on-a-toaster stories that you really don't get hardware so underpowered that this makes sense? Unless you're making millions of these for a microcontroller. It's cool, it's nerdy but it wouldn't in any sense be useful unless it got picked up by someone big. And I don't even see cell phone companies being interested, as they're trying to play the iPhone computer-in-a-phone game now.

      Embedded today is more a form factor, user expectation thing than an actual difference in computers. Put up one application in fullscreen with no taskbar directly from boot and you have an appliance. Beyond that it's pretty much what you could find in a PC, seriously there are phones out there which are way better in every respect than the full-size PCs I used to have. If they came with a breakout box for video/audio/network/usb etc. you'd probably have an acceptable computer.

      --
      Live today, because you never know what tomorrow brings
    11. Re:Stupid license. No thanks. by babyrat · · Score: 2, Insightful

      Truthfully, though neat as a "Gee whiz" type of thing, I just don't see much practical application for Menuet.

      I recall hearing the same arguments regarding Linux and 386BSD back in the early 90's.

    12. Re:Stupid license. No thanks. by wisdom_brewing · · Score: 1

      How about mobile phones? Each one has fixed hardware, having such a small footprint and that type of efficiency would be nothing short of phenomenal...

      Phones are getting more and more bloated, if we could get something like this running on them and some dedicated coders energy efficiency could be improved massively for a given workload.

      So either we could have much more powerful software (blah) or substantially extended battery lives (well... need to work on the screen some more but the CPU on phones these days is starting to get quite hungry too)

      I for one welcome our new bloat-free overlords

    13. Re:Stupid license. No thanks. by Desler · · Score: 1

      Yeah but the major difference is that after 4 years of existence they had more than 10 users and actually had a wide suite of practical applications to use. This thing is 4 years old and the best they can tout is a TCP/IP stack, a web browser and that it can run 13 year old Quake.

    14. Re:Stupid license. No thanks. by Anonymous Coward · · Score: 0

      With a comment like that, can anyone really still believe the GPL was not meant to be viral and pull privately developed code into the open? Can you seriously claim that was an unintended byproduct? Sure, the LGPL exists, but why then does FSF promote GPL'ing libraries? Because you can develop code and other hobbyists can use it, but no one else will. You may make a great app that people will use, but no one will ever use your code.

    15. Re:Stupid license. No thanks. by Verdatum · · Score: 3, Insightful

      Yeah? Well, you're a meanie-head!

    16. Re:Stupid license. No thanks. by Anonymous Coward · · Score: 0

      I dunno....I remember showing this project to a friend circa 2002...

    17. Re:Stupid license. No thanks. by Verdatum · · Score: 3, Interesting

      I realize this doesn't actually defeat your point, but still, to quote Linus' newsgroup post introducing Linux, "It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(."

    18. Re:Stupid license. No thanks. by Desler · · Score: 1

      Okay, I was just going off the copyright date of the license.

    19. Re:Stupid license. No thanks. by Abreu · · Score: 1

      Truthfully, though neat as a "Gee whiz" type of thing, I just don't see much practical application for Menuet.

      I recall hearing the same arguments regarding Linux and 386BSD back in the early 90's.

      The main difference being the licenses these projects are being offerred in...

      --
      No sig for the moment.
    20. Re:Stupid license. No thanks. by Desler · · Score: 1

      Unless mobile phones are going to start using x86 and x86-64 processors en masse any time soon, this project is probably of little importance to the phone companies since it will have to be completely ported over to an ARM architecture. And considering the dearth of features that it contains after so many years, I doubt the phone company is going to be offering them up any money.

    21. Re:Stupid license. No thanks. by TheRaven64 · · Score: 1

      Except that it's written in x86 assembly and putting an x86 core in your phone instead of an ARM chip would cut your battery life in half (if you're lucky).

      --
      I am TheRaven on Soylent News
    22. Re:Stupid license. No thanks. by Mr.+Shiny+And+New · · Score: 1

      Remember, most of the time bloat-free == freature-free. Sure, your mobile phone will be really really fast but you won't be able to add any software to it since nobody else uses this OS.

      Just look at the difficulty systems like FreeBSD/NetBSD/OpenBSD have with apps like KDE or Gnome: changes to these apps frequently work fine on Linux and break on *BSD. Now imagine some tiny OS trying to maintain ports of everything. This OS has its own API and everything. Every single app will need to be rewritten.

      And in the end their claims for performance will only take them so far: Linux and Windows and MacOSX have had lots of performance tuning by very smart people, and Minuet will have some real challenges in the general case. Sure, Linux could be faster, but overall, when you're getting real work done, you'll usually get it done faster with mature tools.

    23. Re:Stupid license. No thanks. by ae1294 · · Score: 4, Insightful

      Probably won't gain much steam with a license like that. Enjoy your obscurity and 3 users.

      SO what?

      At least the they are doing something interesting... Maybe they will find someone who needs a really small and quick OS that is hacker-unfriendly. I'd personally love to see ATM machines running something like this instead of Win2k and XP....

      If by some oddball chance they can make some money off their hobby more power to them... Anyone who can code a OS in ASM is ok in my book and you got no room to judge them just because they are covering all their bases. I mean do you really not think some company wouldn't come and grab up all their work and laugh after spitting in these guys faces?

    24. Re:Stupid license. No thanks. by Pikoro · · Score: 1

      http://psdoom.sourceforge.net/

      psDooM is a process monitor and manager for *nix systems. It could be considered a graphical interface to the 'ps', 'renice', and 'kill' commands. psDooM is based on XDoom, which is based on id Software's 'Doom'.

      See Also: http://www.cs.unm.edu/~dlchao/flake/doom/

      --
      "Freedom in the USA is not the ability to do what you want. It is the ability to stop others from doing what THEY want"
    25. Re:Stupid license. No thanks. by MBGMorden · · Score: 1

      Not to mention the fact that Menuet by definition is just not portable between platforms. Portability helped Linux and BSD tremenously, particularly in the early days as they were built as alternatives to commercial Unix back then, not DOS/Windows. Commercial UNIX ran on all sorts of architectures, so being able to compete with them universally was great.

      Menuet is just too specialized and niche to become a big player. Indeed for it to really do that it would have to retroactively remove everything that makes it interesting the the first place. As I said in another thread, for more intersting alternative OS's I'd look at ReactOS, Syllable, and/or Haiku. Haiku particularly interests me as it seems that they have been making slow but steady progress since they started. I always loved BeOS (that OS ran like greased lightning, and was just a joy to use), and if Haiku can reproduce that in an open-source form then I'd be very happy.

      --
      "People who think they know everything are very annoying to those of us who do."-Mark Twain
    26. Re:Stupid license. No thanks. by Desler · · Score: 2, Insightful

      At least the they are doing something interesting...

      What is interesting or novel about this? There have been numerous OSes written in assembly language. That was pretty much what you did before C came along and even for quite some time after wards. Secondly, writing an OS kernel in assembly was a project that many people did while in school making this pretty mundane to be honest.

      I mean do you really not think some company wouldn't come and grab up all their work and laugh after spitting in these guys faces

      Since no company stole the work during the years while it was under the GPL, I see no reason why they would have had to worry about it enough to change the license for that reason. Secondly, why would some company want to steal an OS that has little to no features when they could just incorporate the code from a BSD instead?

    27. Re:Stupid license. No thanks. by ae1294 · · Score: 1

      What is interesting or novel about this? There have been numerous OSes written in assembly language. That was pretty much what you did before C came along and even for quite some time after wards. Secondly, writing an OS kernel in assembly was a project that many people did while in school making this pretty mundane to be honest.

      C came along in 1972, you must be much much older than I if you wrote an OS kernel in assembly in school. Most so called programmers today can't write anything in Assembly.... Pretty mundane? How many 64bit OS's do you know about that are written in assembly?

      Since no company stole the work during the years while it was under the GPL

      Well if it's just a bunch of ASM how would anyone really ever know if they did or not. And what recourse would he have when he found out? And GPL is cool and I love it but I don't expect everyone to use it so why do you?

    28. Re:Stupid license. No thanks. by TMacPhail · · Score: 1

      The prohibition has no effect on being able to verify the claim. If you were allowed to disassemble, what would you expect to get out of that? Assembly. You will always get assembly from a disassembler so doing that neither proves nor disproves anything. You would need the original assembly source to compare against. And if you had that, you may as well simply examine it to see that it is all assembly and assemble it to verify that it works.

      Having the 32 bit sources available is enough for me to believe their claims about the 64 bit sources also being entirely assembly. Their decision to license 64 bit differently from 32 is a different question altogether though.

    29. Re:Stupid license. No thanks. by JasterBobaMereel · · Score: 1, Redundant

      What's the difference between Linux and Minix?

      1 Linux is monolithic, Minix is a Microkernel system

      2 Minix up until recently had a restrictive licence ... it almost exclusively a teaching system only, and is not widely used even though it is *very* well documented and widely studied

          Linux has always had a free open licence, and even though is arguably an intrinsically less stable system than Minix, is younger, it has done rather well mostly due to it's licence ....

      --
      Puteulanus fenestra mortis
    30. Re:Stupid license. No thanks. by Joe+Jay+Bee · · Score: 3, Informative

      Score: 4, Insightful

      Sarcastic moderation on Slashdot? Fuck yes.

    31. Re:Stupid license. No thanks. by damburger · · Score: 1

      It is good to know, in these economically troubled times, that Microsoft is still employing people to troll Slashdot :)

      --
      If we can put a man on the moon, why can't we shoot people for Apollo-related non-sequiturs?
    32. Re:Stupid license. No thanks. by ericfitz · · Score: 1

      A far more serious issue will be sustained engineering - patches and so forth.

    33. Re:Stupid license. No thanks. by Anonymous Coward · · Score: 1, Insightful

      Jesus, hundreds of comments all tripping over each other in their clever and insightful notice of the word "disassemble".

      Here's a wild theory: the license is copy-pasted.

    34. Re:Stupid license. No thanks. by Khyber · · Score: 1

      "I'm fairly sure that this thing was designed and written to work on the developer's own computer, and practically nothing else."

      Nope, you're wrong. MenuetOS has run on everything from my old 400MHz Celeron to my dual-core 64-bit Athlon64X2 AM2+, no problems.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    35. Re:Stupid license. No thanks. by laffer1 · · Score: 1

      As someone running an OS project with probably 3 users, I can tell you that the license has nothing to do with it :)

    36. Re:Stupid license. No thanks. by amn108 · · Score: 1

      I think it is fairly easy for a person who has sufficient relevant skills to differentiate between disassembled binary that was written by hand and a binary that was generated using less-intelligent machine like a compiler. This is the whole point of being able to "verify the claim". We humans can do that. Then again, if they used macros to generate their binaries, despite it being called "written in assembly", repetitive chunks of instructions are bound to pop-up, confusing humans even more. It is not like what I described is an easy job. But is a fairly doable, and for an expert - consider folks who reverse-engineer viruses and worms, etc. - it is even a profession. So yes, verifiable claim. If you see obviously stupid instruction sequences, which looked completely unoptimized, unless written by a kid who just started with assembly languages, you know probably a compiler has written that, and not a particularly intelligent one either. Also, the more disassembled code you have to look at, if we ignore the size of it as time-factor, the easier it is to give a definite conclusion on whether the code was written by hand by a human or generated by software where human was only supervising (= compiler usage scenario).

    37. Re:Stupid license. No thanks. by amn108 · · Score: 1

      I think Menuet devs know very well, that for anything but the x86, they are, as they say, "shit out of luck." It is fairly obvious to anybody here that Menuet OS is a fairly exotic pet project. That is all it ever is going to be, until the day x86 virtualization will be cheaper than no virtualization, which I personally hope never happens, and neither I think it ever will either. Thus I am not betting on Menuet OS being anything more than that - a pet project. It probably is very important in many ways, not in the least for the devs themselves, it being their child with a lot of good times they had with it - but let us be realistic - it is not a "modern", "mainstream" OS. Linux came out from the same exact mentality - Mr. Torvalds playing with his 386 - but that bathwater was abandoned out shortly thereafter, and the "baby" has grown really fast ever since. Where will Menuet OS grow? It has "written in assembly" as its very DEFINITION. If it is no longer written in assembly, which is the only way to abstract into something that CAN grow, it is no longer Menuet OS, is it?

    38. Re:Stupid license. No thanks. by Anonymous Coward · · Score: 1, Interesting

      Seriously, is the reading comprehension skills around here so limited?

      "without permission"

      Let me get around your big problem, "Excuse me Mr. Copyright Holder, may I have permission to to reverse engineer, disassemble or decompile your software so that I may either independently verify your claim or perhaps use it as the center of an interesting research project."

    39. Re:Stupid license. No thanks. by BikeHelmet · · Score: 2, Insightful

      Or you could pop a quick email off explaining what you want to do, and get permission.

    40. Re:Stupid license. No thanks. by aztracker1 · · Score: 1

      Actually, I was thinking it could be useful for x86 based micro-hardware.. an intel atom powered smart-phone or MID for example. Hell, should be able to get the 4GB based Eee's that keep popping up on woot to be something near useful even.

      --
      Michael J. Ryan - tracker1.info
    41. Re:Stupid license. No thanks. by shutdown+-p+now · · Score: 1

      This is very clearly a toy project to tinker with for fun, not something you'd actually ever use in production. It's still a valid niche, but a non-OSS license makes very little sense there.

    42. Re:Stupid license. No thanks. by Vanders · · Score: 1

      Yeah. Even using the (L)GPL doesn't seem to help us much. All the world is Linux is the problem, not the license.

    43. Re:Stupid license. No thanks. by DaVince21 · · Score: 1

      all the most popular OSs are free for all!

      The most popular of them all, Windows, certainly isn't. And don't even mention pirated copies.

      --
      I am not devoid of humor.
    44. Re:Stupid license. No thanks. by SL+Baur · · Score: 1

      you must be much much older than I if you wrote an OS kernel in assembly in school

      I took my OS class at CSULB and was in the last class that did the kernel project in HP 1000 assembly in 1986.

    45. Re:Stupid license. No thanks. by ae1294 · · Score: 1

      I took my OS class at CSULB and was in the last class that did the kernel project in HP 1000 assembly in 1986.

      Yeah I was born in 78 so you are ahead of me a few years.... I tried finding a book on assembly when I was around 14 because I really wanted to learn how to mod save game files and understand how things worked better after learning basic then turbo pascal 7 but I couldn't find one anywhere. Checked the local book stores, libs, etc... no damn books at all... this was before I could order offline being I was 14 and my parent didn't know how to turn on a computer let alone was going to type in a credit card....

      I'm still looking to learn some assembly some day so maybe it just impresses me because I missed out on the lowest level stuff and feel like so much is MAGIC when it comes to hardware level type programing....

    46. Re:Stupid license. No thanks. by SL+Baur · · Score: 1

      I tried finding a book on assembly when I was around 14 because I really wanted to learn how to mod save game files and understand how things worked better after learning basic then turbo pascal 7 but I couldn't find one anywhere.

      There were books by then ... I learned 6502 assembly in high school from a data sheet xeroxed at the local computer store (and by asking questions to a friendly and most knowledgeable person there). By 1980 there was a book available on 6502 assembly, so I bought it. By 1992 there just wasn't much need for assembly language knowledge, so I guess I'm not surprised you could not find a trade book then.

      It was also helpful reading the original Apple ][ red manual that contained annotated assembly listings of the ROM code. I was much less impressed by Applesoft BASIC[1] (which I made a disassembled listing of to study). Woz's Integer BASIC was tighter code and ran much faster.

      Applesoft BASIC had code in it to prevent anyone from reading the source (an autoexecute bit that would prohibit a loaded BASIC from being read). It also had things like extensive use of the 6502 3 byte NOPS where the 2nd and 3rd bytes contained machine instructions and were jumped to in the middle to do slightly different things.

      [1] For those who don't know history, that was Microsoft BASIC rebranded for Apple.

    47. Re:Stupid license. No thanks. by Jamie+Lokier · · Score: 1

      I wrote an OS kernel in assembly in 1989. I couldn't afford a C compiler, and didn't have an internet connection so hadn't heard of GNU and things like that.

      Actually most of the commercial home computer kernels in the 1980s were written in assembly. Think AmigaOS and CP/M.

  7. Not the best choice of languages by Anonymous Coward · · Score: 5, Insightful

    In today's multi-level cache, highly pipelined CPU environment, hand optimized assembly is not usually the best choice when compared to a good compiler. It's easier for bugs to hide, and small mistakes can cost way more than any possible optimization is going to buy you.

    1. Re:Not the best choice of languages by damburger · · Score: 4, Funny

      You are right of course. What they need is some kind of software tool that can automatically and quickly generate code optimized for any new hardware that comes out. Rather than code in the particular assembly language of the processor of the day they could write out their algorithms in some kind of abstract, human readable script, which the aforementioned tool would then convert to assembly language.

      Why has nobody thought to create such a useful tool for these poor chaps??

      --
      If we can put a man on the moon, why can't we shoot people for Apollo-related non-sequiturs?
    2. Re:Not the best choice of languages by jnaujok · · Score: 5, Insightful

      Spoken like someone who's never coded in Assembly. While I almost never touch assembly any more, there's very little fact in your statement. In assembler, everything is in front of you. There's no need to worry about what the libraries are doing, or whether the call to some function is going to cause side effects or something you didn't intend, or whether some compiler quirk is going to make your code take ten times longer to run.

      Having written in assembly on 8048, 8051, 8086 and DEC Vax boxes, I can tell you right now that debugging most of that code was a lot easier than chasing down the side effect from some array overwrite on leaked memory from a third-party library that you didn't even know was being linked into your code.

      Writing in a compiled language is easier, faster, and usually has a better set of pre-written functionality, but never, ever claim that it's going to be more optimized. Even with pipelining updates from the compilers that help the look-ahead caches on the CPU, there's very few times that hand-coded assembler isn't going to be faster.

      Go look at the assembler that some of these compilers produce. It's frightening to see the amount of overhead they cost on even simple assignment operations. I saw one compiler (Microsoft's Visual C++) that took a simple x=10; in C++ and turned it into 15 assembly language operations that, had it been coded by hand, would have been one MOV statement. The compiler turned it into conditional conversions for type, did some byte order and range checking on it (for a hard assign to a constant -- rolls eyes) and then finally did the same MOV AX, 0x0a that you would have coded by hand.

      --
      Life, the Universe, and Everything... in my image.
    3. Re:Not the best choice of languages by Desler · · Score: 5, Insightful
      Actually his points are quite valid. It is not a good choice to write everything in assembly when the speedups you gain in most places is not worth the amount of time and effort you spend in hand-optimizing the code. And considering how many bugs I've seen in people's asm code that they didn't spot till later his second point is also true.

      Even with pipelining updates from the compilers that help the look-ahead caches on the CPU, there's very few times that hand-coded assembler isn't going to be faster.

      The GP never made that claim.

    4. Re:Not the best choice of languages by Rockoon · · Score: 2, Informative

      ..and thats why the fastest encryption libraries are written in high level languages, right?

      oh, erm.. encryption algorithms need the exact things you claim compilers are great at, yet the fastest encryption libraries are in hand-written assembler.

      The fact is that this "compilers are better than humans" meme is complete bullshit and has always been bullshit. This fact can clearly be demonstrated by looking at the change logs of those compilers. For well over a decade this meme has been out there and for well over a decade there has been continual performance improvements to those compilers..

      ..and to top it all off, if you arent using ICC then your compiler is shitty even compared to other compilers. The easiest optimization a VC or GCC programmer can make is to switch to ICC.

      What it all boils down to is that HLL's use an abstract machine that has nothing at all to do with the real world details of computing on a specific architecture, and that my friend is why hand written essembler will always win the performance war.

      --
      "His name was James Damore."
    5. Re:Not the best choice of languages by OwnedByTwoCats · · Score: 1

      Also, in high level languages, the developer has easy access to powerful abstractions with well-tested implementations. If I know I'm going to need access to a lot of data, it's trivial to say "Map myMap = new HashMap(); while ( ...) { ... ; myMap.add( key, value); }" It's a lot more work to build the structures in assembly language to do the same thing. So the developer takes a shortcut and writes a simple linked list. In cases like these, high-level implementations that use the appropriate algorithms will beat the pants off assembly-language implementations that use simpler algorithms because coding the complex algorithm is not practical.

    6. Re:Not the best choice of languages by rodsoft · · Score: 2, Informative

      Go look at the assembler that some of these compilers produce. It's frightening to see the amount of overhead they cost on even simple assignment operations.

      I doubt this kind of code is being generated in *RELEASE* builds. I often check the code being generated in inner loops and most of the time it's the Right Thing (tm). I'm pretty amused to see that the compiler can aggregate calls to sin/cos with the same argument into a single fsincos call, or vectorize some loops over arrays. That's like having the best of two worlds: human readable code that maps directly to the problem at hand AND very well optimized generated code. And given a new CPU and a compiler that understands its architecture and can take advantage of it, my higher level code will profit from it with minimal change. PS: higher level code -> C++

    7. Re:Not the best choice of languages by Desler · · Score: 1

      ..and thats why the fastest encryption libraries are written in high level languages, right?

      oh, erm.. encryption algorithms need the exact things you claim compilers are great at, yet the fastest encryption libraries are in hand-written assembler.

      Because the GP claimed that there was no use for assembler at all? Oh wait, they didn't.

      The fact is that this "compilers are better than humans" meme is complete bullshit and has always been bullshit. This fact can clearly be demonstrated by looking at the change logs of those compilers. For well over a decade this meme has been out there and for well over a decade there has been continual performance improvements to those compilers..

      Yes, it is not true that the most well-optimized assembly code will beat the best compiler. But any good programmer has learned that rewriting all parts of a program in assembler does not always gain significant returns for your effort and in some cases these "optimizations" can actually have deleterious effects on the overall execution speed of the program. Not to mention the fact that there are numerous assembly language programmers that just flat out suck at coding in it and can in many cases produce slower code than that output from a compiler (have seen this in many cases). There is no guarantee that just cause you wrote it in assembly that it's going to be faster than a compiled C/C++ program.

      What it all boils down to is that HLL's use an abstract machine that has nothing at all to do with the real world details of computing on a specific architecture, and that my friend is why hand written essembler will always win the performance war.

      Yes, but in many cases that peformance gain is quite minimal compared to the extra effort put in to writing and debugging the asm.

    8. Re:Not the best choice of languages by Desler · · Score: 1

      That was meant to be "is true" not "is not true"

    9. Re:Not the best choice of languages by ari_j · · Score: 1

      The other thing is that an optimizing compiler can be imbued with perfect (modulo some assumptions, which can be made configurable so that the one area that the programmer has more knowledge than the compiler is covered) knowledge of the efficiency consequences of every decision it makes. And it can apply that knowledge nearly instantaneously. Hand-coding assembly other than to cope with things that cannot be written in a higher-level language (for instance, the switch from real mode to 64-bit mode in a boot loader or OS kernel) is obsolete in the same way that the horse-drawn buggy is: The modern replacement has become more efficient in every metric, faster, and (pun alert) more portable.

      But I still think that the project is very cool. Writing something that big in assembly will make you a better programmer in other languages, just like writing something substantial in Lisp will have the same effect. It's probably also a testament to meticulous, clear documentation, if they did it right, and that's a skill that every one of us could stand to improve.

    10. Re:Not the best choice of languages by Barrie_rdv · · Score: 1

      Encryption algorithms use a wide variety of bit twiddling operations such as rotations, that are not defined as operators in C for example. So it is best to directly use the assembly instructions for those parts, otherwise the compiler would have to be smart enough to see that what you are doing is a rotation. They are in a bit of a unique position compared to "normal" programs.

    11. Re:Not the best choice of languages by Cereal+Box · · Score: 2, Insightful

      Assembly is best for optimizing limited sections of code where your specific domain knowledge can allow you to make optimizations the compiler wouldn't know about. It makes sense in those situations, and that's it. Writing an entire, non-trivial application (or OS in this case) is a waste of time since

      • you're going to spend far more time coding than you would in a high-level language
      • your chance of introducing bugs is far greater
      • your code loses portability

      And most importantly, for everything except the most critical number-crunching algorithms your app deals with, any performance edge you may gain against a compiler will be so minuscule as to not matter.

    12. Re:Not the best choice of languages by Hurricane78 · · Score: 3, Interesting

      Also, since when do you have to write your program/os in only one language?

      Game developers mix their code all the time. C++ for the main part/glue, assembly for the tight loops and things that need speed-ups, and a (maybe compilable) scripting language like Python or Lua for, well, scripting (bots, map events, rules, etc).

      I'd write an OS in Haskell for the main part, and assembly or C++ for the really low level or very speed-dependent stuff.

      --
      Any sufficiently advanced intelligence is indistinguishable from stupidity.
    13. Re:Not the best choice of languages by Tim4444 · · Score: 1

      You still have to worry about hardware behavior which can have more side effects than some API's. It's often harder to get reliable documentation for hardware especially if you're dealing with different chipset versions or even different vendor boards for the same chipset. If you really want to know all the details you need to wire it yourself.

      At some point you're going to have to deal with OS system calls. Even with Menuet, one programmer didn't write the whole thing so once they started writing apps they were working with API code written by other people. It's also disingenuous to measure compiler overhead by looking at one isolated statement. If you're program only does "x=10;" then I would represent that in assembly with an empty file because an isolated MOV doesn't accomplish anything. If you're actually doing something with the data, then even assembly programs need some overhead like error checking, bounds checking, heap management, etc.

      In all coding you have to look at the big picture. There's more to speed than just individual instructions. For example, quick sort in C will always be faster than bubble sort in assembly.

    14. Re:Not the best choice of languages by operagost · · Score: 2, Insightful
      From the GP post:

      In today's multi-level cache, highly pipelined CPU environment

      None of the CPUs you mentioned have those features.

      --

      Gamingmuseum.com: Give your 3D accelerator a rest.
    15. Re:Not the best choice of languages by Anonymous Coward · · Score: 1, Insightful

      In assembler, everything is in front of you.

      Spoken like someone who never coded more than a page in Assembly. For larger stuff the right wording would be:

      Everything is behind you and waiting to kick you in the ass.

      You don't have to worry about side effects? There is no local scope, so in fact everything you do has side effects. When writing Assembly you have to take care of these side effects, which is usually done using push&pop.

      This is especially dangerous when you optimize the code. Like when using functions. Usually one pushes every register that function touches at the begin and pop that at the end, so the caller doesn't have to worry about that. Or the caller pushes everything he wants to preserve and pops that after the call. Both are good calling conventions to remove the side effects of a call. Bit both are not optimal. Optimal is to push&pop only those registers that are needed and actually used. But with this a simple change in the function can cause havoc accross your whole code base.

      Actually this is also a scenario where compilers perform very well. When the compiler decides to inline a function it takes care of optimal register usage.

    16. Re:Not the best choice of languages by Anonymous Coward · · Score: 0

      Qualifiers. Usually. Some things benefit from hand crafted asm. Some things don't. Cost benefit analysis is your friend.

    17. Re:Not the best choice of languages by TheRaven64 · · Score: 1

      In assembler, everything is in front of you

      No it isn't. In C you do foo(), in assembly you push the arguments onto the stack / into registers and do call $_foo (your architecture may vary). The difference is, with the C version, your modern compiler will look at both your code and the code for foo() and decide whether to inline the call, whether to generate a specialised version of foo() for that set of arguments, or whether to just emit the call based on the output of profiling runs, heuristics and the relative code size of the two functions. If you modify foo(), it will revisit this decision at every call site.

      --
      I am TheRaven on Soylent News
    18. Re:Not the best choice of languages by TheRaven64 · · Score: 4, Insightful
      Which encryption routines are these and what architecture are they written for? The fastest encryption routines I'm aware of are written in GLSL which is not just compiled, it's compiled to bytecode then JIT-compiled by the driver when the program is loaded! The second fastest use dedicated crypto hardware, via (C) ioctl() functions calling a driver, which is written in C. Oh and:

      For well over a decade this meme has been out there and for well over a decade there has been continual performance improvements to those compilers.

      Just because version n+1 of a compiler is better than version n of a compiler doesn't mean that version n isn't better than a human. Maybe you can do cross-module function specialisation in your head, but the rest of us aren't so lucky.

      --
      I am TheRaven on Soylent News
    19. Re:Not the best choice of languages by Rockoon · · Score: 1

      But any good programmer has learned that rewriting all parts of a program in assembler does not always gain significant returns for your effort and in some cases these "optimizations" can actually have deleterious effects on the overall execution speed of the program.

      I beg to differ. Most good programmers think that their C compiler beats out assembler. Most good programmers are wrong, in spite of being good.

      And, if something has a negative effect then its not an optimization. Programmers do this thing called profiling, so they KNOW what effect the change has. You are spitting up FUD here. Unlike HLL programmers, asm programmers seeking performance are constantly profiling, and I am not talking about the kind of crappy profiling that most C++ programmers do either. Most of the features of VTUNE and CodeAnalyst are worthless to HLL programmers (pipeline simulations, for example) but give the asm programmer the ability to really and truely ramp things up. They dont understand that the abstract machine they target is just a stunted toy compared to real machines.

      Not to mention the fact that there are numerous assembly language programmers that just flat out suck at coding in it and can in many cases produce slower code than that output from a compiler (have seen this in many cases).

      This isn't news. This is a well known concept fully backed by research. Skill Level > Language Choice. While its true, its also irrelevant.

      There is no guarantee that just cause you wrote it in assembly that it's going to be faster than a compiled C/C++ program.

      There is if (A) I wrote it, (B) I'm finished, (C) It wasn't something trivial.

      HLL's have their place. When performance isnt a concern they are great. The rest of your points are all about when performance isnt a concern. So *clap* *clap* *clap* hurray for you pointing out that assemblers have their limited place while refusing to admit that compilers also have their limited place.

      --
      "His name was James Damore."
    20. Re:Not the best choice of languages by Anonymous Coward · · Score: 0

      The compiler turned it into conditional conversions for type, did some byte order and range checking on it (for a hard assign to a constant -- rolls eyes) and then finally did the same MOV AX, 0x0a that you would have coded by hand.

      Debug configuration, I'm guessing.

    21. Re:Not the best choice of languages by ImprovOmega · · Score: 1

      While I agree that coding an entire program in assembly is generally an exercise in futility, it is incredibly useful in bursts for time critical sections of code. Things like color space conversions or wavelet transforms in image coding or DCT/FFT transforms in audio processing are usually best done as functions written in inline assembly (where you can take advantage of SSE1/2/3 extensions for parallel processing). But the rest of it, especially UI code, is much better off in a high level language. If for no other reason than the extra 200k in executable size and the additional .5 seconds it takes to load are negligible to the human actually using it. But for the hard number crunching you don't really want to hit 100% utilization of an entire processor core just to play back some MP3 audio or MPEG-4 video files.

    22. Re:Not the best choice of languages by adisakp · · Score: 5, Informative

      Writing in a compiled language is easier, faster, and usually has a better set of pre-written functionality, but never, ever claim that it's going to be more optimized. Even with pipelining updates from the compilers that help the look-ahead caches on the CPU, there's very few times that hand-coded assembler isn't going to be faster.

      As CPU's become more complex, this is less and less true. For example, even on the PS2, they created a tool called VCL that preprocessed assembler for you for maximum usage of registers, unrolling, and pipelining. It generated better optimized code than 99% of of coders out there could do on their own and at a fraction of the effort to seriously fully optimize pipelined assembler -- not to mention the asm code was much more maintainable since with handrolled manually pipelined code you may have to re-optimize everything if you change a single register or just a few instructions. Also, things like the auto-unroll and auto-register-assignment a were huge time saver (it could unroll a loop NX and allocate NX registers to interleave SIMD operations to hide latencies).

      That's not to say that a really great ASM programmer wouldn't do better than VCL, but he would have to work much much harder. You'd have to track all the registers yourself, remember the pipelining rules and latencies for every single instruction, be willing to experiment with unrolling every loop and counting cycles between unrolled (with prologs/epilogs) and normal versions, know all the possible instruction swaps, synchronize the integer and vector pipelines manually, try nearly all possible instruction orders, etc. Certainly an average assembler programmer wouldn't do as well.

    23. Re:Not the best choice of languages by Rockoon · · Score: 1

      Encryption algorithms use a wide variety of bit twiddling operations such as rotations

      So do a lot of other algorithms, and that algorithm you thought couldn't take advantage of them, probably also can.

      otherwise the compiler would have to be smart enough to see that what you are doing is a rotation.

      Most are. This includes VC and GCC. They are smart enough to convert (x >> c) | (x
      Still further, most compilers have rotation intrinsics (including VC, GCC, and ICC)

      The compilers still arent good enough. The reason they don't do well in this case (*) isnt what you think. Its because they just arent very good at scheduling instructions in spite of the claims to the contrary, because its just too complex to be expressed in a set of heuristics. Its actualy also too complex for humans most of the time, but humans have tools that allow them to find the scheduling inefficiencies during real world execution, and those can only be addressed in assembler.

      (*) This case is actualy a simple one. Cache considerations are fairly minimal and the work that needs to be done isnt all that complex (its just tedious)

      --
      "His name was James Damore."
    24. Re:Not the best choice of languages by Rockoon · · Score: 1

      Woops, html ate that roll expression (it was shift right by c, or'ed with a shift left by 32-c)

      --
      "His name was James Damore."
    25. Re:Not the best choice of languages by Desler · · Score: 1

      And, if something has a negative effect then its not an optimization.

      Depending on what point you are measuring the effect, yes it can. You can rewrite sections of code such that they locally are faster, but can in the overall cause issues in other places such that they run slower. It's all about scope.

      You are spitting up FUD here.

      If this is FUD then Donald Knuth is the biggest spreader of FUD ever since he has talked about just such situations in his books.

      There is if (A) I wrote it, (B) I'm finished, (C) It wasn't something trivial.

      What great blustering. I'm so impressed.

      So *clap* *clap* *clap* hurray for you pointing out that assemblers have their limited place while refusing to admit that compilers also have their limited place.

      I never did any such thing, but hey, have fun trying to act like your a bad ass because you learned some asm mnemonics that any intro level CS student could do as well.

    26. Re:Not the best choice of languages by Rockoon · · Score: 1

      If this is FUD then Donald Knuth is the biggest spreader of FUD ever since he has talked about just such situations in his books.

      Donald Knuth, the man uses his own assembly language when expressing algorithms? Pleeeeeaaaaaaseeeee....

      I have all of his books (boxed set!), and even have all of the fasciles for the book he hasnt released yet. I've also watched all the videos online of his lextures/classes.

      You picked the *wrong* name to be dropping. When you are conversing with a dedicated optimizer, thats the last person you should try to misrepresent. The second to last person you should try to misrepresent is Abrash.

      I never did any such thing

      You listed downsides of assembler and upsides of HLL's, while listing no upsides of assembler and no downsides of HLL's.

      Maybe you just don't have the ability to detect your bias. As far as my assembler skill, I've been programming in x86 assembler since the 8086. I also use HLL's. I mix the two because I happen to choose the right tool for the job. I don't have this ignorant mindset that only one tool is great.

      --
      "His name was James Damore."
    27. Re:Not the best choice of languages by Anonymous Coward · · Score: 0

      ..and to top it all off, if you arent using ICC then your compiler is shitty even compared to other compilers. The easiest optimization a VC or GCC programmer can make is to switch to ICC.

      What if the target is AMD?

    28. Re:Not the best choice of languages by Just+Some+Guy · · Score: 2, Insightful

      That's not to say that a really great ASM programmer wouldn't do better than VCL, but he would have to work much much harder. You'd have to [...]

      ...start from scratch when someone rolls out a different chip design that obsoletes all your assumptions or when you learn a new optimization technique. I'd much rather write at a higher level and let new versions of the compiler handle updated architectures, and automatically adjust all my old code whenever their optimizers improve.

      --
      Dewey, what part of this looks like authorities should be involved?
    29. Re:Not the best choice of languages by microbee · · Score: 2, Insightful

      Well I guess the compilers/CPU architecture have advanced enough that some of your old experience doesn't apply anymore.

    30. Re:Not the best choice of languages by lophophore · · Score: 1

      Spoken like somebody who has never coded for a highly pipelined processor.

      None of those you mentioned (8048, VAX, etc.) meet that requirement. They are all antiques.

      The AC's statement was completely true. I'm not a compiler jock (though I know a few), but I can tell you that most modern high-end processors need more smarts than a traditional "assembler" can support to get best performance out of the hardware. A good example is the macro-assembler for the Alpha AXP and Itanium processors. It is technically a optimizing compiler. You could write assembler, and use an actual assembler to target these processors, but the performance and maybe operation of your code would suffer due to details of the processor architecture. These problems are understood and worked around by compiler writers.

      You could hand optimize that assembly code. Sure. It's possible. And it is even done. But not very often. I don't think anyone in their right mind would want to hand-optimize an entire OS worth of assembler to run on a modern processor.

      Read about the hazards of pipelined processors here: http://en.wikipedia.org/wiki/Hazard_(computer_architecture)

      Carefully coded C (or some other high-level languages) can approach (though not meet) the performance of carefully coded assembler, and is much more portable and maintainable. Your DEC VAX had its operating system (VMS) mostly coded in BLISS.

      --
      there are 3 kinds of people:
      * those who can count
      * those who can't
    31. Re:Not the best choice of languages by Anonymous Coward · · Score: 0

      Actually his points are quite valid. It is not a good choice to write everything in assembly when the speedups you gain in most places is not worth the amount of time and effort you spend in hand-optimizing the code. And considering how many bugs I've seen in people's asm code that they didn't spot till later his second point is also true.

      You both have valid points. Let me add a little bit more.

      There are two situations that would justify using pure assembly (or even machine code if you're really hardcore).

      1. Embedded devices, like BIOS, car computers, small electronics, etc. Where you have minimal space, instructions, and resources available.

      2. Operating systems. Where you really should have 100% total control over what code is being executed, when and where. Especially in the kernel and low level drivers.

      Beyond that, there isn't a whole lot of point of JUST using assembly for the entire program, unless you are a masochist or just enjoy wasting a lot of time.

    32. Re:Not the best choice of languages by lophophore · · Score: 1

      Spoken like somebody who has never coded for a highly pipelined processor.

      None of those you mentioned (8048, VAX, etc.) meet that requirement. They are all antiques.

      The AC's statement was completely true. I'm not a compiler jock (though I know a few), but I can tell you that most modern high-end processors need more smarts than a traditional "assembler" can support to get best performance out of the hardware. A good example is the macro-assembler for the Alpha AXP and Itanium processors. It is technically a optimizing compiler. You could write assembler, and use an actual assembler to target these processors, but the performance and maybe operation of your code would suffer due to details of the processor architecture. These problems are understood and worked around by compiler writers.

      You could hand optimize that assembly code. Sure. It's possible. And it is even done. But not very often. I don't think anyone in their right mind would want to hand-optimize an entire OS worth of assembler to run on a modern processor.

      Read about the hazards of pipelined processors here: http://en.wikipedia.org/wiki/Hazard_(computer_architecture)

      Carefully coded C (or some other high-level languages) can approach (though not meet) the performance of carefully coded assembler, and is much more portable and maintainable. Your DEC VAX had its operating system (VMS) mostly coded in BLISS.

      --
      there are 3 kinds of people:
      * those who can count
      * those who can't
    33. Re:Not the best choice of languages by Anonymous Coward · · Score: 0

      I'm not sure what GLSL you are referring to, I hope its not the OpenGL Shading Language - CUDA or OpenCL would probably be what you are thinking of.

    34. Re:Not the best choice of languages by Obfuscant · · Score: 1
      Optimal is to push&pop only those registers that are needed and actually used. But with this a simple change in the function can cause havoc accross your whole code base.

      Spoken like someone who never coded more than a page in Assembly. Optimal is for the function to push registers that it is going to use and pop them when done, so changing the FUNCTION changes the pushes and pops. You don't put the push/pop sequences before and after every function call. That's silly. It's writing the same code multiple times.

    35. Re:Not the best choice of languages by Anonymous Coward · · Score: 0

      O RLY? That was the first calling convention described. And that is not optimal. Look up what optimality means. It doesn't mean it is the method that pleases you the most.

    36. Re:Not the best choice of languages by Khyber · · Score: 1

      "None of the CPUs you mentioned have those features."

      Umm, I don't know what archaic system you're running but my most recent Phenom system has THREE LEVELS OF CACHE ON-DIE. I've got 128KB L1, 512KB L2 and 2MB L3.

      Actually, some server hardware a couple of years ago had three levels of on-die cache.

      --
      Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
    37. Re:Not the best choice of languages by blackraven14250 · · Score: 1

      Efficiency also includes how fast the code is written, and how hard it is to write. If it takes a month extra to save one cycle of clock time on code that doesn't do a large number of calculations, that's not efficiency. If it takes you 5 more employees with M.A.'s, that might not be efficient monetarily.

    38. Re:Not the best choice of languages by dingleberrie · · Score: 1

      I just got a patent approved that uses that process. Please let me know if you hear of anyone using that method because I have a great business opportunity for them.

    39. Re:Not the best choice of languages by Desler · · Score: 1

      Donald Knuth, the man uses his own assembly language when expressing algorithms? Pleeeeeaaaaaaseeeee....

      I have all of his books (boxed set!), and even have all of the fasciles for the book he hasnt released yet. I've also watched all the videos online of his lextures/classes.

      You picked the *wrong* name to be dropping. When you are conversing with a dedicated optimizer, thats the last person you should try to misrepresent. The second to last person you should try to misrepresent is Abrash.

      You may bluster on about owning all his books, but apparently you never actually read them because he has talked in a number of his papers and in the book Literate Programming about the faults of trying to optimize every single inefficiency and about how premature optimization can lead to performance problems in a program. There is nothing in my post that misrepresents anything he has said.

      You listed downsides of assembler and upsides of HLL's, while listing no upsides of assembler and no downsides of HLL's.

      Maybe not in that specific post, but I didn't realize I had to write an exhaustive treatise about the entire subject in that single post.

      Maybe you just don't have the ability to detect your bias.

      What bias? I have no bias against assembly at all and use it extensively in programs. But like most people, I've learned that writing everything in assembly doesn't gain you much in terms of how much effort you put in and that you only optimize the biggest inefficiencies in your programs with it. The only "bias" is this one invented in your head where you think I'm completely against using assembly at all.

      As far as my assembler skill, I've been programming in x86 assembler since the 8086. I also use HLL's. I mix the two because I happen to choose the right tool for the job.

      And I do exactly the same. Wow, maybe next time you shouldn't jump to conclusions and throw out false statements about someone because you want to start an argument

      I don't have this ignorant mindset that only one tool is great.

      That's great.

    40. Re:Not the best choice of languages by Bluesman · · Score: 1

      There's no need to worry about what the libraries are doing, or whether the call to some function is going to cause side effects or something you didn't intend, or whether some compiler quirk is going to make your code take ten times longer to run.

      Why not? Because you're not going to link against any libraries? Assembly lets you do that; and you can also not use libraries when using C.

      I've looked at plenty of optimized C compiler output and it's fairly tight with a recent compiler. You're not going to get much more performance out of it, and you're probably not CPU bound on any problems anyway, so saving instructions probably will result in a very little performance increase when your bottleneck is main memory.

      --
      If moderation could change anything, it would be illegal.
    41. Re:Not the best choice of languages by amn108 · · Score: 1

      Actually his point stressed inferiority of "hand optimization" REGARDLESS of that factor of human time. He was talking specifically about the better ability of a sufficiently intelligent modern compiler to produce optimal code versus human attempting to to that, time spent regardless.

      If we take into account the human time and the costs involved, then this is another discussion again, with different arguments.

    42. Re:Not the best choice of languages by amn108 · · Score: 1

      Funny how you mentioned "something that big". I think part of the point is when you write something in assembly, paradoxically, to a human, it seems smaller.

    43. Re:Not the best choice of languages by amn108 · · Score: 1

      That's like having the best of two worlds: human readable code that maps directly to the problem at hand AND very well optimized generated code

      That's the Holy Grail of computer programming science. That and the right diet for software developers :-)

    44. Re:Not the best choice of languages by Darinbob · · Score: 1

      Because these poor chaps think that Intel x86 is the only CPU that will ever be used? Sometimes I feel the PC world exists in a vacuum, deliberately excluding outside knowledge (and thus being able to claim that virtual machines or garbage collection or multiprocessing are new inventions).

      People wrote operating systems in assembler in the past because of partly because of necessity; lack of memory, lack of good compilers, etc. The problems with writing an OS (or apps) in assembler were clear in the past, at least outside the micro hobbyist world. Lack of portability, harder maintenance, obscure bugs, and difficulty with getting good performance on newer architectures.

      Going back to those days might be an interesting exercise, something to do for fun. But I can't see it as being a serious venture.

    45. Re:Not the best choice of languages by Anonymous Coward · · Score: 0

      > I'm aware of are written in GLSL which is not just compiled, it's compiled to bytecode then JIT-compiled by the driver when the program is loaded!

      What makes you think that a hand-written encryption routine written for that GPU (assuming you have direct access to it), wouldn't be faster than the JIT compiled version?

      > The second fastest use dedicated crypto hardware, via (C) ioctl() functions calling a driver, which is written in C.

      What makes you think that the driver written in C makes it faster? Obviously the hardware does the hard work, the C code is only the interface.

    46. Re:Not the best choice of languages by Darinbob · · Score: 1

      Yes, the hand coded assembler can be faster. However it takes an enormous amount of time to do this. The Pentium and up are not merely faster versions of 8080s or similar to a VAX. To get better performance than a quality compiler is going to take a lot of WORK, not just adding up cycle counts. You could spend all day getting the most performance out of a 20 instruction sequence, beating the compiler by just a couple of cycles. There are going to be a lot of routines where that extra effort is a waste of time, at which point it's better to let the compiler take over so that the programmer can work on something where the time spent is useful.

      That is using assembler for every single nut and bolt in an operating system is essentially the same as hand optimizing every piece of code. You can do it but your time is better spent elsewhere.

      And don't compare Microsoft Visual C++ to a good compiler, they're often very far behind the competition. And be sure you are really comparing the right thing - optimizations on and only looking at final linked product. I do look at compiler outputs a lot, and often when I think they're inefficient it's because I'm putting extra constraints on them (ie, external function linkage necessary because I forgot to say "static", etc).

      The one thing compilers could be improved on is in knowing which parts of code need to be optimized for speed and which need to be optimized for space (not at all the same thing, though on some simpler cpus they're very similar). Some newer GCCs allow pragmas to change optimizer flags on the fly, which is a help but it's still cumbersome.

    47. Re:Not the best choice of languages by ari_j · · Score: 1

      I meant it in a relative sense. Most people never write more than 100 lines of assembly at a time.

    48. Re:Not the best choice of languages by PhotoGuy · · Score: 1

      Go look at the assembler that some of these compilers produce. It's frightening to see the amount of overhead they cost on even simple assignment operations. I saw one compiler (Microsoft's Visual C++) that took a simple x=10; in C++ and turned it into 15 assembly language operations that, had it been coded by hand, would have been one MOV statement.

      Spoken like someone who hasn't used a modern compiler.

      This statement might have been true ten years ago (or maybe still true with MSC). But in general, with a good modern compiler, it isn't.

      In the Z-80 days, I did everything assembly (actually, in raw machine code, compiling in my head, effectively). I learned C in the 8088 days, but did a lot of optimization, putting my CPU intensive stuff in assembler functions. And so forth on the VAX, and into the 386 days, doing graphics work, 3D stuff, games, and such.

      Then the Watcom compiler came along, and started pushing what compilers could truly achieve.

      It reached a point where, looking at the generated code, I realized that in general, the compiler was doing as good, or very nearly as good a job as I could do. In some cases, with loop unrolling and other "non-local" optimizations, it was doing better. At this bore out in actual performance timing tests. And the other compilers caught up to Watcom, and they all continued to get better and better; my hand-written optimized code had already reached its limit, that the compilers approached.

      Granted, there will always be some case where a bit of assembler can optimize things; but with the speed of CPU's, and the quality of modern compilers, the case where it's worth the effort is *exceedingly* rare.

      I doubt you could show an example today with the latest GCC, where an assignment resulted in a dozen instructions.

      Simple example:

                      i = 0;
                      for (j = 0; j < 10; j++)
                                        i += j;

      ran through "gcc -O -S", gives:

                      movl $0, %eax
                      movl $0, %edx
      L2:
                      addl %edx, %eax
                      incl %edx
                      cmpl $10, %edx
                      jne L2

      Hard to beat that (other than figuring out the algorithm and reducing to a constant, which some of the super-advanced compilers probably do :)

      And with limited register sets, compilers can be better than humans, at figuring which variables are best stashed in memory or on the stack, and which are best cached in registers.

      --
      Love many, trust a few, do harm to none.
    49. Re:Not the best choice of languages by PhotoGuy · · Score: 1

      Actually, to follow up on my own post, I wouldn't say that compilers got as good as human-written assemblers "ten years ago"; it's more like "15 - 20 years ago," IMO. (And even in the 70's, compilers were good enough that the Unix operating system could be written mostly in C, with a few thousands lines of assembler for optimization.)

      --
      Love many, trust a few, do harm to none.
    50. Re:Not the best choice of languages by Virak · · Score: 1

      The Phenom is one of "8048, 8051, 8086 and DEC Vax"?

    51. Re:Not the best choice of languages by Anonymous Coward · · Score: 0

      The CPUS you listed are from a different world. They didn't have branch prediction, multiple out-of-order execution, etc. Everything *was* out in front of you, but today's CPUs have deeper layers of abstraction.

      Having written and optimized code in C and Assembly on modern Intel networking processors and in-house custom networking processors, I can say with HUGE CONFIDENCE that compilers usually rival hand-coded results.

      Your one-off straw man example of a Microsoft compiler is insufficient to topple even modest optimizing compilers like gcc.

      Yes, I have some nostalgia for the older CPUs like the 6502, etc., but I got over my "John Henry" complex a long time ago. I suggest you do the same.

      IMEO, the smartest thing to do is to examine the assembly output of critical areas of code and scrutinize them for unnecessary steps. Then, modify the source code to produce a more efficient output.

    52. Re:Not the best choice of languages by mgblst · · Score: 1

      I agree with you, but this he is referring to the compiler optimising code to suit x86 processors, like pipelines, and minimising branches, and having enough instructions between branches, and better use of registers. A lot of effort goes into compilers to optimise for processors these days, something that would be a real pain keeping track of in assembly.

    53. Re:Not the best choice of languages by kjs3 · · Score: 1
      > Having written in assembly on 8048, 8051, 8086 and DEC Vax boxes

      In other words, you've never written assembly for anything remotely resembling a modern, deeply pipelined processor with multiple functional units or, frankly, most any other modern processor construct (though \VAX processors \did have (tiny) cache and (short) pipeline). Well, I guess that's authoritative.

    54. Re:Not the best choice of languages by Anonymous Coward · · Score: 0

      written like someone who needs to learn to read

    55. Re:Not the best choice of languages by gpronger · · Score: 1

      Good piece. One of the thoughts I've had is the impact of more memory and "better" higher level languages. It seemed that when there was significant limitation on memory assy was used more often to manage to remain under the memory limitations.

      Greg

    56. Re:Not the best choice of languages by Anonymous Coward · · Score: 0

      The AC GP never mentioned any computer systems. AC specifically stated "In today's multi-level cache, highly pipelined CPU environment, hand optimized assembly is not usually the best choice when compared to a good compiler."

      Operaghost stated: "None of the CPUs you mentioned have those features."

      Since between there and here there was no mention of processors or system types, that makes operaghost's statement broad, and somewhat useless. On top of that, since no processors were ever mentioned, his statement suggests that no processor has that kind of technology, which anybody with a brain knows is inherently false and has been for quite a while.

    57. Re:Not the best choice of languages by SL+Baur · · Score: 1

      When writing Assembly you have to take care of these side effects, which is usually done using push&pop.

      Spoken like someone who has never written Assembly on a stackless machine. Stack-based architectures didn't win until the mid 1970s.

      My O/S class project was doing a kernel on an HP 1000. 16 bit machine, no stack and "subroutine" calls wrote the return address into the word just above the code called.

      Now, get off my lawn!

    58. Re:Not the best choice of languages by SL+Baur · · Score: 1

      Optimal is for the function to push registers that it is going to use and pop them when done

      You're as ignorant of the past as the poster you're responding to. What are these push and pop instructions on a CPU without a machine stack?

      You too, get off my lawn!

    59. Re:Not the best choice of languages by SL+Baur · · Score: 1

      That's not to say that a really great ASM programmer wouldn't do better than VCL, but he would have to work much much harder.

      That question was settled half a century ago. Unless you're working with an underpowered CPU (like the early microprocessors 8080, 6502, etc.) or where you do not have a high level language to work with, programming in assembly for any important work is a FAIL.

    60. Re:Not the best choice of languages by SL+Baur · · Score: 1

      Carefully coded C (or some other high-level languages) can approach (though not meet) the performance of carefully coded assembler, and is much more portable and maintainable.

      You "approach (though not meet)" the truth - carefully coded C will exceed the performance of 99.999% of the work of an assembly language coder.

      Please read up on the history of the most important compiler of all time - the first FORTRAN compiler. Start here - http://www.ibiblio.org/pub/languages/fortran/ch1-1.html

      Now, get off my lawn!

    61. Re:Not the best choice of languages by SL+Baur · · Score: 1

      That is using assembler for every single nut and bolt in an operating system is essentially the same as hand optimizing every piece of code. You can do it but your time is better spent elsewhere.

      Amen.

      The one thing compilers could be improved on is in knowing which parts of code need to be optimized for speed and which need to be optimized for space (not at all the same thing, though on some simpler cpus they're very similar). Some newer GCCs allow pragmas to change optimizer flags on the fly, which is a help but it's still cumbersome.

      Linus sometimes has harsh words for the GCC guys, but they really have done an excellent job of improving the compiler over the years. It's little short of miraculous that they can support so many different language front ends and machine architecture backends and still produce great code most^H^H^H^Hnearly all of the time.

    62. Re:Not the best choice of languages by SL+Baur · · Score: 1

      And even in the 70's, compilers were good enough that the Unix operating system could be written mostly in C, with a few thousands lines of assembler for optimization.

      That was probably the most important decision that an O/S implementer has ever made. Do note though, that Dennis Ritchie's first compiler for a language invented for Ken Thompson to write the first Unix kernel in, more resembled "B", than modern day "C". It was also highly dependent on the PDP.

      It wasn't until Steve Johnson wrote the "Portable" C compiler that C became a viable language.

      s/15 - 20/50/

      I suppose it is one of the great ironies of computer history that an operating system written for a hardware company (DEC) that never ended up adopting it (Unix), would later end up killing it (DEC). Tru64 was too little, too late. RIP Alpha.

    63. Re:Not the best choice of languages by SL+Baur · · Score: 1

      Maybe you just don't have the ability to detect your bias. As far as my assembler skill, I've been programming in x86 assembler since the 8086. I also use HLL's. I mix the two because I happen to choose the right tool for the job. I don't have this ignorant mindset that only one tool is great.

      But what do you do if someone wants to run your code on an ARM or (gasp) an Alpha?

    64. Re:Not the best choice of languages by Rockoon · · Score: 1

      You may bluster on about owning all his books, but apparently you never actually read them because he has talked in a number of his papers and in the book Literate Programming about the faults of trying to optimize every single inefficiency and about how premature optimization can lead to performance problems in a program.

      If you can quote me where I said anything to the contrary, that you make you look smart.

      Since you can't, that makes you look stupid and juvenile.

      --
      "His name was James Damore."
    65. Re:Not the best choice of languages by Rockoon · · Score: 1

      But what do you do if someone wants to run your code on an ARM or (gasp) an Alpha?

      They can't. Most programs written in HLL's can't simply be recompiled either. What does this have to do with anything?

      The poster claimed that compilers at better at optimizing than humans. Hes wrong. Thats all. All the other stuff he brings up is irrelevant to his error.

      --
      "His name was James Damore."
    66. Re:Not the best choice of languages by SL+Baur · · Score: 1

      Most programs written in HLL's can't simply be recompiled either. What does this have to do with anything?

      My usual response to a comment like this would be to ask to share whatever it is you're smoking brother /.er, in this case I'm not so sure I really want to.

    67. Re:Not the best choice of languages by Rockoon · · Score: 1

      You honestly think that arbitrary C programs can be recompiled on different platforms?

      It is *you* that is smoking something. Most of the time, you can't even use a different compiler on the SAME platform.

      --
      "His name was James Damore."
    68. Re:Not the best choice of languages by SL+Baur · · Score: 1

      Most of the time, you can't even use a different compiler on the SAME platform.

      Sigh. Children. About 90% of Linux compiled with the proprietary DEC/COMPAQ compiler when I was doing a Turbolinux port to Alpha ~2000.

      My first introduction to GCC came when it was ported to the AT&T 3B1 aka Unix PC. C code could be compiled on both that and Steve Johnson's compiler. Interchangeable. Same as on Suns of that period.

      I have had a tougher time doing portable Ada than I've ever had doing portable C.

      Arbitrary programs if they were coded by people like you? No. Well written programs? Yes. I've had decades of experience dealing with that.

      Now, get off my lawn!

  8. That's just dumb. And kinda cool. by localman57 · · Score: 5, Interesting

    The article is slashdotted, so I'll post a thought without RTFA. I do embedded firmware for a living; assembly programming is part of my job. But unless you have to fit all of your software into a $.42 micro, there's no reason to write all your software in assembly. Typically, you get most of your performance gains by rewriting 5% or less of the software in assembly [Citation needed... :-)]. As for the rest, go with C or higher for maintainability and portability.

    6 months from now, a new processor revision will provide enough marginal performance to make up for not coding the other 95% in assembly.

    That said, this is a monumentally cool achievement, if academic.

  9. They should... by oldhack · · Score: 4, Funny

    Man, they should, like, totally port that to ARM. ;-)

    --
    Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
    1. Re:They should... by hyperion2010 · · Score: 1

      You'd think RISC would be more attractive to someone wanting to write ASM... esp given that ARM+ASM would result in godly win of low power, high performance, high reliability. Surely there is a market for something like that....

    2. Re:They should... by Desler · · Score: 1

      Probably because releasing this written in ARM assembly would make it an even more niche OS than it already is?

    3. Re:They should... by Anonymous Coward · · Score: 0

      I don't about more recent versions, but the original RiscOS was written in ARM assembly language. And ARM is *much* nicer to program in assembly than x86.

  10. "it can even fit on a floppy disk"... by martas · · Score: 5, Funny

    *blink*

    is that some kind of new super-awesome flexible organic flash memory?

    1. Re:"it can even fit on a floppy disk"... by RyuuzakiTetsuya · · Score: 2, Funny

      No, it's yet another proprietary Sony format that Sony is going to try to force on consumers.

      RIOT AGAINST SONY AND THEIR "FLOPPY" DISKS! PROPRIETARY I SAY!

      --
      Non impediti ratione cogitationus.
  11. Not that amazing by jdunn14 · · Score: 4, Interesting

    For a more impressive feat, check out the Synthesis kernel written back in 1988. Also written entirely in assembly, and as stated in the linked wikipedia entry, that OS kernel was the "mother of all self-modifying code." It actually handled things like thread scheduling by generating a custom assembly snippet to jump to the correct point in the next thread to execute.

    http://en.wikipedia.org/wiki/Self-modifying_code#Alexia_Massalin.27s_Synthesis_kernel

    1. Re:Not that amazing by Massacrifice · · Score: 3, Interesting

      thread scheduling by generating a custom assembly snippet to jump to the correct point

      Wow, this thing must have been fun to debug and maintain. And also, must be a challenge to optimize current generation CPUs for, with separate data and instruction caches... No wonder it never gained traction.

      --
      -- Home is where you eat your heart out.
    2. Re:Not that amazing by dawnpatrol1623 · · Score: 2, Insightful

      I agree, Synthesis was a much bigger achievement with a much grander vision.

    3. Re:Not that amazing by Lemming+Mark · · Score: 3, Insightful

      Wow, this thing must have been fun to debug and maintain. And also, must be a challenge to optimize current generation CPUs for, with separate data and instruction caches... No wonder it never gained traction.

      Yeah, I read somewhere that that was the reason everybody's given up on the Synthesis techniques today. A shame, in a way, as it was a really cool system.

    4. Re:Not that amazing by LUH+3418 · · Score: 1

      Nowadays, something like LLVM could be built into the kernel to handle all the JIT code generation. That would make it more portable and easier to debug. Having written a JIT compiler using LLVM myself, I can tell you it's not that difficult. Anyone that understands assembly well can do it, in fact, you don't even need to know all the details. If the OS was going to generate snippets of code to jump to certain points in a program, the bugs would probably get ironed out pretty quickly.

    5. Re:Not that amazing by TheRaven64 · · Score: 2, Insightful

      As someone who hacks on LLVM... you don't want to put it in the kernel unless you like crashes whenever it hits an assert() statement. In would like to integrate it into the loader though, so the first time you run a program it runs a JIT-compiled version with profiling code all over the place then emits an optimised static-compiled version for later (I've started doing this a bit with LanguageKit, but it would be better if it moved a layer down the stack). Unfortunately, the link-time optimisation stuff in LLVM isn't really well-designed for keeping code in separate modules, which is important if you want to take advantage of shared libraries (you don't want every program to have its own copy of libc, for example. If I did that, my memory would currently have 500MB filled with libc copies). Hopefully this will change soon...

      --
      I am TheRaven on Soylent News
    6. Re:Not that amazing by Anonymous Coward · · Score: 0

      Hmm, self modifying code can be useful, but watch out for Data Execution Prevention error traps on modern machines.

    7. Re:Not that amazing by MrWim · · Score: 1

      Valerie Aurora wrote an interesting article about the paper at lwn: http://lwn.net/Articles/270081/

    8. Re:Not that amazing by noidentity · · Score: 3, Informative

      Yes, Synthesis is very cool. Apparently file buffers were handled with on-the-fly code with the buffer pointer embedded within it, and without explicit checks, instead relying on an unmapped page just past the end and a page fault handler to refill the buffer (at least that's how I remember the author explaining it to me). I believe the author is also the one who original wrote the Superoptimizer.

    9. Re:Not that amazing by noidentity · · Score: 1

      I found a better description of how it essentially does just-in-time compilation, treating even the pointer to tbe file, buffer etc. as constants, thus resulting in different compiled code for each file opened.

    10. Re:Not that amazing by noidentity · · Score: 2, Informative

      I found a better description of how it essentially does just-in-time compilation, treating even the pointer to the file, buffer etc. as constants, thus resulting in different compiled code for each file opened.

      (argh, link was borked in the previous post)

  12. Followup to Menuet by halfdan+the+black · · Score: 5, Funny

    I think I might work on a sequel...
    Build a 747 with nothing but stone knives and bear skins...

    1. Re:Followup to Menuet by mikael · · Score: 2, Funny
      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    2. Re:Followup to Menuet by hypergreatthing · · Score: 1

      macguiver, is that you?

    3. Re:Followup to Menuet by fahrbot-bot · · Score: 2, Informative

      macguiver, is that you?

      Actually, that would be Mr. Spock (to Edith Keeler), from TOS episode, "The City on the Edge of Forever":

      I am endeavoring, Madam, to construct a mnemonic memory circuit using stone knives and bearskins.

      Please turn in your Geek card :-)

      --
      It must have been something you assimilated. . . .
  13. Thanks for your great accomplishments! by Shin-LaC · · Score: 2, Funny

    Hard drive makers, you have my eternal gratitude.

  14. Re:That's just dumb. And kinda cool. by cabjf · · Score: 3, Informative

    I agree, the major advantages of assembly for that other 95 percent would be negated by a good C or higher compiler that will probably write more efficient and faster binaries than most programmers could using assembly.

  15. Quake? by pjt33 · · Score: 1

    I don't get it: why is running Quake an impressive feat? That's pretty much the epitome of a program which doesn't need to be multitasked with anything else.

    1. Re:Quake? by Desler · · Score: 1

      Exactly. Pretty much any computer made from 2000 onward can play quake with no hiccups.

    2. Re:Quake? by bluefoxlucid · · Score: 2, Informative

      Quake is a highly parallel program with dozens or hundreds of threads running at once just to support its physics, AI, and player control operations. The original DOS version brought its own threading library (compiled in); as Quake was written on more modern OSes and ported to DOS, the original implementation used OS calls while the DOS version used an application-level thread manager.

    3. Re:Quake? by Desler · · Score: 1

      That still doesn't show how that is an impressive feat. I would be more surprised if it couldn't play Quake than the fact that it can.

    4. Re:Quake? by Anonymous Coward · · Score: 0

      I don't get it: why is running Quake an impressive feat? That's pretty much the epitome of a program which doesn't need to be multitasked with anything else.

      Well, it's the same way that getting a/an [INSERT CONSOLE HERE] emulator running under [INSERT CONSOLE + 1 GENERATION HERE] is an impressive feat for homebrew stuff. Everyone's already seen it, it lets us stay solidly ten or more years in the past, and nobody's ever going to make anything more interesting for it, so it stagnates.

      What? I never said it actually WAS impressive.

    5. Re:Quake? by Anonymous Coward · · Score: 0

      I don't get it: why is running Quake an impressive feat? That's pretty much the epitome of a program which doesn't need to be multitasked with anything else.

      Hey, try writing a hobby operating system just for kicks and giggles. After trying that you'll be incredibly impressed by anyone that gets quake working on theirs.

    6. Re:Quake? by TheRaven64 · · Score: 3, Insightful

      Citation massively needed. I've poked around briefly in the Quake source code and found nothing like this (although it does make some use of coroutines). And, even if true, the fact that it contains its own threading implementation and doesn't require anything more than the OS than timer interrupts does nothing to counter the grandparent's point. Quake has been ported to Java and, even with the software renderer, ran well several years ago on a then-modern CPU, so it's hardly an example of something particularly demanding on either the CPU or the OS.

      --
      I am TheRaven on Soylent News
    7. Re:Quake? by X3J11 · · Score: 1

      Quake is a highly parallel program with dozens or hundreds of threads running at once just to support its physics, AI, and player control operations.

      [Citation Needed]

      Flipping through the Q1 source right now, I can find no reference to the word "thread" in the entirety of the client source through both cursory examination and a simple grep. Nor are there any calls to either CreateThread or _beginthread, which one would expect find in multithreaded Windows software. The only library included with the source was the Scitech MGL, there's nothing to be found matching your claim of a "compiled in" threading library.

      Considering the system requirements at the time (66 MHz Processor, FPU, 8MB RAM, 1MB framebuffer), I find it difficult, if not impossible, to believe your claims of hundreds of threads. Modern games are just now beginning to take advantage of multithreading.

      Either you're talking out your ass, or I'm putting my foot in my mouth.

    8. Re:Quake? by pjt33 · · Score: 1

      I may not have expressed myself particularly clearly. The question was: why mention Quake rather than, say, multi-tasking Firefox, OpenOffice and mpg123?

    9. Re:Quake? by Anonymous Coward · · Score: 0

      Probably because they don't have Firefox, OpenOffice or mpg123 (people still use mpg123?!), but they do have Quake.

    10. Re:Quake? by bluefoxlucid · · Score: 1

      Seems you're right. I checked, the network code uses threading and that's it.

    11. Re:Quake? by pjt33 · · Score: 1

      people still use mpg123?!

      Probably about as many as still use Quake. I was trying to pick a generic music player; maybe I should have picked VLC or mplayer instead.

    12. Re:Quake? by DaVince21 · · Score: 1

      Heck, any computer made from 1996 onward probably can.

      --
      I am not devoid of humor.
    13. Re:Quake? by H0p313ss · · Score: 1

      Heck, any computer made from 1996 onward probably can.

      It will even run on (some) cell phones.

      Writing your own OS is always cool... trying to show off something that would have looked feeble a decade earlier is kind of silly.

      --
      XML is a known as a key material required to create SMD: Software of Mass Destruction
  16. Re:That's just dumb. And kinda cool. by TheRealMindChild · · Score: 1, Informative

    The "entire" OS isn't written in Assembly (Quake and I think the web browser were not. As a matter of fact, there is a C runtime lib at http://menuetlibc.sourceforge.net/). But certainly the core bits are. The choice for Assembly was to keep the design uncomplicated, not for performance.

    --

    "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
  17. Yes, but... by Anonymous Coward · · Score: 0

    ...does it run Linux?

  18. Re:That's kinda cool. by b4dc0d3r · · Score: 2, Insightful

    The point was to write an OS in assembly, so all of your analysis is irrelevant.

    It's monumentally cool, and academic. The point wasn't to have a portable OS, and assembly can be very maintainable if structured correctly.

    If they wanted a lightweight, portable OS they would have chosen a different language.

  19. A very neat concept. by Anonymous Coward · · Score: 0

    It seems that it is being bashed around here a bit, but I applaud it. They are taking a 'back to basics' approach while implementing modern functionality of a slick GUI.

  20. Kolibri: a Menuet offshoot by dargndorp · · Score: 4, Informative

    Since all links in the article submission seem to be slashdotted, an offshoot of Menuet OS named KolibriOS is located at http://www.kolibrios.org/?&lang=en.

    1. Re:Kolibri: a Menuet offshoot by ZeroExistenZ · · Score: 1
      Why did they at KolibriOS tried to mimic XP?

      Look at the menubar in blue and the startbutton in green...

      I don't find the XP interface so superb and renewing it should be kopied. I would rather praise new attempts at intuitive navigation. This and the file navigator thingie has been done over and over again...

      It's also a bit against creative innovation; people want opensource, but get them at it and they try to rebuild Microsoft, while they continiously bash Microsoft and never seem to get at such a level?

      Build something truely amazing and innovative and I'll hop on and spend some of my spare time contributing.

      Right now I'm rather waiting for http://gocosmos.org/ to have rewritten their compiler.

      --
      I think we can keep recursing like this until someone returns 1
    2. Re:Kolibri: a Menuet offshoot by impaledsunset · · Score: 2, Insightful

      How is KolibriOS "based on" Menuet, given than the former is GPL, and the latter is under a proprietary license? Their history page seems empty, and the only description I found on their page is in Russian, which I'm not good in.

    3. Re:Kolibri: a Menuet offshoot by MBGMorden · · Score: 4, Informative

      Kolibri is a fork of the 32-bit Menuet OS which WAS GPL. When Menuet went proprietary then community forked the GPL version.

      --
      "People who think they know everything are very annoying to those of us who do."-Mark Twain
    4. Re:Kolibri: a Menuet offshoot by Desler · · Score: 1

      KolibriOS is a fork of Menuet while the source was still GPLed.

    5. Re:Kolibri: a Menuet offshoot by Anonymous Coward · · Score: 0

      Menuet was originally GPL but later closed.

    6. Re:Kolibri: a Menuet offshoot by The+MAZZTer · · Score: 1

      Maybe this fork won't hang if you try to use it in a VM. Also maybe the fork will keep an up-to-date 32-bit download.

      I tried Menuet once but those two irks were quite annoying to me, especially since the 32-bit version hasn't been updated since I tried it and saw the 32-bit version was already out of date then. Might give this fork a try.

  21. Re:That's just dumb. And kinda cool. by Dex5791 · · Score: 1

    I don't think it's dumb, maybe overkill would be a better term. You want the stuff that is frequently used (e.g. the kernel, device drivers, etc.) to be fully optimized and totally bug free. There's no reason for it be 100% assembly. They could have just as easily written most of the UI code with C/C++ then optimized the lower level code with assembly. The work would get done faster and it would have more useful features.

  22. Fast due to assembly or fast because it's minimal? by Walter+White · · Score: 5, Insightful

    I have to wonder if it is small and fast because when writing in assembly it is easier to resist the urge to add features. Todays compilers are pretty good and can produce pretty tight binaries. However, you can write (and debug) a lot more code in a given time using a high level language.

  23. obsolete technology by gsslay · · Score: 5, Funny

    (it can even fit on a floppy disk, despite having a GUI)

    Excellent, but if we're going to measure these things in obsolete technology;

    - How many parchments would I need to copy it?
    - Could my team of monks transcribe it in its entirety before the Feast of All Hallows Eve?
    - If the Germans intercepted a morse transmissions of it, how long would it take them to crack the code and scupper our plans to retake mainland Europe?

    1. Re:obsolete technology by ari_j · · Score: 1

      If the Germans intercepted a morse transmissions of it, how long would it take them to crack the code and scupper our plans to retake mainland Europe?

      A fortnight. Two, at most.

    2. Re:obsolete technology by DigitalLogic · · Score: 1

      Where would those monks be now if they rejected the current number system and continued using roman numerals?

    3. Re:obsolete technology by Anonymous Coward · · Score: 0

      How many parchments would I need to copy it?

      Roman or italic characters? And what point size?

      Could my team of monks transcribe it in its entirety before the Feast of All Hallows Eve?

      Please define 'team' and state if you want it illuminated or not. And what time is the feast?

      If the Germans intercepted a morse transmissions of it, how long would it take them to crack the code and scupper our plans to retake mainland Europe?

      WWI or WWII?

  24. Re:That's just dumb. And kinda cool. by timeOday · · Score: 4, Interesting

    Interestingly, their homepage does not tout execution speed as a motivation: "Menuet has no roots within UNIX or the POSIX standards, nor is it based on any operating system. The design goal has been to remove the extra layers between different parts of an OS, which normally complicate programming and create bugs." It sounds to me more like they are fed up with all the clutter and layers of abstraction in a modern OS and want to see what happens if you start with a clean slate. Then again, without open source, the aesthetic appeal of this "clean" approach is limited.

  25. Zillions by berpi · · Score: 1

    You could fit zillions of virtual Menuets in one single computer...

  26. Re:That's just dumb. And kinda cool. by miffo.swe · · Score: 1

    If it was true that optimizing 5% was enough to get big performance gains in an OS i wonder why most recent ones are slugs on lead diet? Its not all about pure CPU performance, much is about disk and memory footprint which is where i suspect most of the gains lies in using assembly programming. The same routine for altering a picture in Windows might perform just as well as the same routine in for eg. Its just that everything else in a modern OS is written in high level language and the overhead makes it really noticable in the end. Compare reading a floppy into memory to reading and storing 16GB in memory and you get the picture.

    --
    HTTP/1.1 400
  27. What's a Floppy Disk? by mdwh2 · · Score: 2, Informative

    it can even fit on a floppy disk, despite having a GUI

    Those of us who still remember floppy disks should also remember that having a GUI with an OS that fits on a floppy is nothing new. For the most recent example, see the QNX floppy demo. (Was QNX written in assembly?)

    1. Re:What's a Floppy Disk? by larry+bagina · · Score: 1

      The QNX Source code is available. The majority is in C, IIRC.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    2. Re:What's a Floppy Disk? by TheRaven64 · · Score: 1

      QNX is a microkernel. As I recall - I've not looked at the source, due to licensing restrictions - a large amount of the microkernel is written in assembly, but this doesn't do anything beyond process isolation and message passing. Everything on top is written in C or higher-level languages, including the drivers, the GUI, and so on.

      --
      I am TheRaven on Soylent News
    3. Re:What's a Floppy Disk? by tixxit · · Score: 1

      Yep. I remember booting up a fully usable desktop environment off a QNX floppy about 8 or 9 years ago. It even had a basic web browser.

  28. Re:That's just dumb. And kinda cool. by hey! · · Score: 4, Informative

    I agree. Every time I've ever profiled code, I've been amazed at how much time is spent in such tiny portions of the code.

    It's an interesting exercise though. I've only done a little assembler, but my thoughts were that if I did more of this I could get pretty good at it. The trick in any kind of programming is to learn to express *ideas*. I learned several different programming paradigms over the course of my career, and while I'm doing OO like everyone else these days, having tried functional programming makes me a better programmer.

    I could imagine doing non-trivial systems in assembler, but mainly if the problem domain and its solutions are very well understood. When you see that 1% of your code is taking 99% of your execution time, you *could* tighten that code and get an immediate payback, or you could try understand the problem better in order to find a more efficient algorithm. If you can improve your algorithms, that's almost always going to be a bigger win.

    We've been making essentially modern operating systems (virtual memory, process scheduling etc.) for a long time. If you just wanted to implement the textbook approaches for everything, and didn't care about architecture portability, it seems pretty feasible for a couple of guys to make a reasonably credible OS in assembler, provided they knew their OS stuff and were very good assembly programmers. Obviously the C with assembly for tight loops approach is a quicker path to a usable system, but the fact that they're assembly enthusiasts probably means they'll get more benefit out assembler where it is most useful and less benefit out of C where assembler is least useful than a sane programmer would. And it's always worthwhile to demonstrate the limits of conventional wisdom.

    SInce you work in embedded systems, I don't have to tell you that upgrading your processor in six months isn't always an option.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  29. Re:That's kinda cool. by El_Muerte_TDS · · Score: 3, Insightful

    What's academic about writing an OS in assembly?

  30. Puleeeease ... by garry_g · · Score: 1

    There's two guys taking on the (nowadays) unheard of task of writing an Assembly OS, and all people go on about is that you can run Quake on it? WTF ... The last Assembly-OS I used (well, to a big part anyway) was my trusty ol' Amiga ... and it ran circles around many systems that came later with more CPU power ...

    1. Re:Puleeeease ... by Anonymous Coward · · Score: 0

      As far as I recall, AmigaOS wasn't written entirely in assembly. AmigaDOS was originally written in BCPL and then ported to C, for example.

    2. Re:Puleeeease ... by jimicus · · Score: 1

      There's two guys taking on the (nowadays) unheard of task of writing an Assembly OS, and all people go on about is that you can run Quake on it? WTF ... The last Assembly-OS I used (well, to a big part anyway) was my trusty ol' Amiga ... and it ran circles around many systems that came later with more CPU power ...

      Hardware has become so cheap now that a lot of software houses don't dedicate much effort to speeding up their code, instead taking the approach that it'll be a lot easier to recommend the customer goes out and buys the latest, greatest piece of tin to run their software on.

      This can backfire - I have seen software which recommended buying a Pentium 4 CPU of such speed that Intel never actually released it, instead moving towards the Core architecture. The scary bit was the software did actually need such a fast CPU, even though it wasn't doing anything intrinsically complicated.

    3. Re:Puleeeease ... by Desler · · Score: 1

      AmigaOS was C and assembly and before that contained BCPL code.

  31. networking by james_shoemaker · · Score: 4, Interesting

    Too bad it doesn't have wireless networking support, it looked to be the perfect thing to make older notebook computers useful.

    1. Re:networking by Anonymous Coward · · Score: 0

      Too bad it doesn't have wireless networking support, it looked to be the perfect thing to make older notebook computers useful.

      I use some kind of BSD for reviving old hardware. OpenBSD seems to rock at this (and not only).

    2. Re:networking by couchslug · · Score: 3, Informative

      Damn Small Linux and Puppy Linux work well on older machines. Give 'em a try.

      http://www.damnsmalllinux.org/

      www.puppylinux.org/

      --
      "This post is an artistic work of fiction and falsehood. Only a fool would take anything posted here as fact."
    3. Re:networking by Vovk · · Score: 1

      Not the perfect solution.
      "perfect solutions" include many linux distros, as well as any of the BSDs.

    4. Re:networking by Anonymous Coward · · Score: 0

      I wonder if they would be willing to use C/C++ in order to support a lot of different hardware?

      I like the concept, and of the assembly programs I've seen and written, if they made the entire OS run and respond that fast, a 133 MHz computer could be really fast.

      I would want to use a PCMCIA wifi card (or a built-in one on a newer computer). They should sell netbooks with their software on it after they get everything to work.

      But, what is this Floppy disk thing? They are dead to me, and I bet a lot of kids today have never used one.

    5. Re:networking by chrb · · Score: 1

      Debian+LXDE is also good, it seems to be one of the Debian install CDs now. Advantage over Damn Small Linux is a pure Debian install, no extra packages.

  32. No by hasbeard · · Score: 4, Funny

    No, a floppy disk is what you get when you leave a DVD in the back window of your car on a hot day.

    1. Re:No by martas · · Score: 1

      or maybe it's a disk that is just not that interested?

  33. Ehhh..... by OwnedByTwoCats · · Score: 5, Insightful

    Ehhh. The whole effort doesn't impress me. There are/were Linux distros that fit onto a floppy. OSs were written in Assembly for years.

    If they can demonstrate that "remov[ing] the extra layers between different parts of an OS" simplifies programming and eliminates bugs, then they'll have something interesting. And they can have a flame war with the microkernel folks, who assert that separating the OS into separate parts that are independent and can be thoroughly tested simplifies programming and eliminates bugs.

    Abstractions have a purpose; they make it easier to think about things. There are no "Files" or "Folders" (or "Directories", for those of a Unix persuasion) on your hard drive; there are only a sequence of blocks. The Operating System provides the abstraction of files. Various protocols and their implementations then provide an abstraction that "Files" and "Folders" on remote machines are just like "Files" and "Folders" on the local drive.

    If abstractions make life complicated for the OS developer, but easier for the user, is it a win? It depends on whether the OS has more developers or users.

    1. Re:Ehhh..... by MBGMorden · · Score: 1

      or "Folders" (or "Directories", for those of a Unix persuasion)

      Actually I think you'll find that many non-Unix people call them directories too. It wasn't until Windows was released that the "folders" meme became popular. When running DOS (and before, and even for some time after the release of Windows 95, DOS was still very much a part of using a Microsoft-based computer) they were still referred to as directories - hence the "dir" command for listing all the files in one ;).

      --
      "People who think they know everything are very annoying to those of us who do."-Mark Twain
    2. Re:Ehhh..... by porkThreeWays · · Score: 1

      My favorite quote... can't remember who said it...

      "The types of problems you can solve is directly related to the quality of abstraction available"

      --
      If an officer ever threatens to taze you, say you have a pacemaker.
    3. Re:Ehhh..... by pegr · · Score: 1

      But did you load the thing? I did it in a VM just now, and it goes from boot to desktop in about two seconds. True, it doesn't support my NIC or my soundcard, but it's REALLY fast!

      Oh, and for the FOSS vrowd, the 32-bit version is GPL2.

    4. Re:Ehhh..... by TheRaven64 · · Score: 1

      The 'folder' description comes from Xerox, by way of Apple, so it's been around for over 25 years. Folder describes how they are used (for storing documents), directory describes how they are implemented (as a mapping from names to inode/sector numbers). Directory is a good OS term, folder is a good UI term. Calling them directories in a UI setting is silly because it's exposing what ought to be an opaque abstraction hidden by the OS right up to the user.

      --
      I am TheRaven on Soylent News
    5. Re:Ehhh..... by Desler · · Score: 1

      One can probably also compile a Linux distro that has a equivalent dearth of features and get it to boot in only a few seconds. I don't understand why boot times are supposed to be something I'm supposed to be impressed over since I don't reboot my boxes for at least 6 months or more.

    6. Re:Ehhh..... by Rycross · · Score: 1

      I think people simply feel that boot times are indicative of how "heavy" or "bloated" your operating system is. If it takes a long time to boot, chances are there is a lot of stuff loading in the background.

    7. Re:Ehhh..... by npsimons · · Score: 1

      "The types of problems you can solve is directly related to the quality of abstraction available"

      Probably not who you are thinking of, but Paul Graham has said something very similar many, many, many, many times. I suggest reading as much of his writing as you can.

    8. Re:Ehhh..... by Darinbob · · Score: 1

      Abstractions have a purpose; they make it easier to think about things.

      It makes maintenance much easier as well. Try adding a new feature or redesigning an existing one when there was little abstraction or separation of layers and such. People who end up maintaining other people's code often run into this (people who only maintain their own code however may think it's easy). Changing the design when there was no abstraction is like trying to change the design on a sweater after it's already been knitted.

    9. Re:Ehhh..... by Trogre · · Score: 1

      With a GUI?

      --
      "Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
    10. Re:Ehhh..... by SL+Baur · · Score: 1

      If abstractions make life complicated for the OS developer, but easier for the user, is it a win? It depends on whether the OS has more developers or users.

      The whole point of an O/S is to provide some kind of abstraction to the hardware and divide resources efficiently between users/processes.

      But, I also find it remarkable that people are still using CP/M disk drive letters when they were stupid idea 40 years ago.

  34. Given that by warrax_666 · · Score: 2, Informative

    Given that most assemblers are macro assemblers, I'd imagine that disassembly doesn't give the original source code back. You get an equivalent source code, but it might be considerably harder to read (depending on macro usage, obviously).

    --
    HAND.
  35. Re:That's just dumb. And kinda cool. by Anonymous Coward · · Score: 0

    You're supposed to RTFA before posting??

  36. Been done already... by Anonymous Coward · · Score: 1, Interesting

    There has already been an operating system written in assembly language, which fit on a floppy disc, despite having a GUI.

    It was called the Macintosh operating system. (and no, it was not written in Pascal, despite having Pascal calling conventions)

  37. Re:That's just dumb. And kinda cool. by FlyByPC · · Score: 2, Interesting

    Typically, you get most of your performance gains by rewriting 5% or less of the software in assembly [Citation needed... :-)].

    I think you mean Amdahl's Law (that speeding up or parallelizing one task will only produce a speedup limited by the relative time consumed by that task compared to the rest of the code.)

    I do think that writing good, efficient C code (for instance) will get you most of the way there -- and in that case, your argument is right. There's still something to be said for developing something like this just for art's sake, though. Why do people admire handcrafted Swiss watches, when they can get a perfectly good timepiece for a few bucks down at the Wal-Mart? Craftmanship, and the skill it implies, are impressive to those of us who know what is involved.

    Perhaps (if they could open up the code, and if it has very good documentation), they could use it as an example of how to get things done quickly in assembly. Once you get into the assembly mindset, it *is* fun to figure out a way to run a loop in 2/3 the instructions (allowing your robot to control 24 servos instead of 16, with the same $5 microcontroller).

    --
    Paleotechnologist and connoisseur of pretty shiny things.
  38. So 95/96ish by jhhdk · · Score: 1

    QNX from mid 90ies was an OS that would fit on a 1.44Mb floppy although not written entirely in assembly.
    Among features were win95ish gui, webbrowser, PPP dialer, TCP/IP stack.

  39. Yes! by warrax_666 · · Score: 0, Redundant

    I think you're right! Now, what might one call such a tool? A... "compiler" maybe?

    --
    HAND.
    1. Re:Yes! by Just+Some+Guy · · Score: 4, Funny

      Can't put one past you, can they.

      --
      Dewey, what part of this looks like authorities should be involved?
  40. Re:That's just dumb. And kinda cool. by orzetto · · Score: 2

    Typically, you get most of your performance gains by rewriting 5% or less of the software in assembly [Citation needed... :-)]

    <ref>Donald Knuth, in "Structured Programming with Goto Statements". Computing Surveys 6:4 (December 1974), p. 267: "Experience has shown [...] that most of the running time in non-IO-bound programs is concentrated in about 3% of the source text".</ref>

    --
    Victims of 9/11: <3000. Traffic in the US: >30,000/y
  41. Re:That's kinda cool. by pnewhook · · Score: 2, Informative

    What's academic about writing an OS in assembly?

    Actually writing an OS in assembler on a 680x0 was part of my engineering degree. Also had to write a real time multithread scheduler.

    --
    Tesla was a genius. Edison however was a overrated hack who liked to torture puppies.
  42. Re:That's just dumb. And kinda cool. by MBGMorden · · Score: 1

    Quake and the web browser are applications, not part of the OS.

    --
    "People who think they know everything are very annoying to those of us who do."-Mark Twain
  43. Assembly language doesn't scale by Joce640k · · Score: 3, Interesting

    Writing large programs in assembly language is almost impossible, you have to get it perfect first time because refactoring assembler code is next-to-impossible.

    eg. Small changes in the base data structures (eg. change a data type) mean you have to go through and change every instruction which references that data, and since there's no type-checking in assembler you can easily miss some and the assembler won't tell you about it.

    With a compiled language you can change the data type and you're done.

    This argument also explains why C++ is better than C. C++ and OO methodology makes writing large programs MUCH easier than using C and procedural code. With C code you have to keep an awful lot more knowledge in your head at any give time and it's easy to forget things in C that can be done automagically in C++.

    --
    No sig today...
  44. Re:That's kinda cool. by Joce640k · · Score: 1

    academic = It's admirable on an intellectual level but not useful to the outside world.

    --
    No sig today...
  45. Should have used Java by Anonymous Coward · · Score: 1, Funny

    If they wanted speed, they should have written the kernel in Java.
    The very latest JVMs use clever "Just-In-Time" compilation techniques to dynamically re-write the code in real time, without any performance loss what-so-ever, typically giving speed-ups in the order of 50,000% compared to C, C++ and even the very best hand-crafted machine-code from assembler professors.

    1. Re:Should have used Java by Vovk · · Score: 2, Funny

      you fool! Java's 50,000% speed increase in respect to C, C++ will never overcome the benefits of programming in FORTRAN!

      Real programmers program in FORTRAN! It is the perfect and most complete programming language! FORTRAN is simultaneously the language of the future AND the past!

      Anything C can do, FORTRAN can do better AND automatically! FORTRAN will take us to new heights as a human race!

      FORTRAN will make your computer do work before you even think it!

    2. Re:Should have used Java by Desler · · Score: 2, Insightful

      I know this is being sarcastic, but if you are doing huge amounts of number crunching you are better off writing it in FORTRAN as it will be faster.

    3. Re:Should have used Java by Vovk · · Score: 1

      I was being completely serious

      http://www.pbm.com/~lindahl/real.programmers.html

    4. Re:Should have used Java by k_yarina · · Score: 1
      FORTRAN? Fortran's for lazy typers. Real Programmers use Cobol and punch their own 026 drum cards.

      If it doesn't take two boxes of cards it's not a real program.

    5. Re:Should have used Java by SL+Baur · · Score: 2, Informative

      Whoosh. The point of doing number crunching in FORTRAN is that FORTRAN does not reorder expressions. This is critical to maintain accuracy in certain computations.

      Who cares how fast it is if you come up with the wrong answer?

  46. Re:That's just dumb. And kinda cool. by fractoid · · Score: 1

    Typically, you get most of your performance gains by rewriting 5% or less of the software in assembly [Citation needed... :-)].

    That sounds about right. I think I might have heard it quoted first by Abrash (in saying that '90% of the speedup comes from optimising 10% of the code' or somesuch) but I'm sure cavemen sat looking at antelope and going "if we put effort into this 10% of the chase we can take the antelope down 90% faster".

    --
    Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
  47. My Javascript OS by Maltheus · · Score: 3, Funny

    I guess now is not the right time to announce my OS written entirely in Javascript. It can already play the Bill Gates Pie in the Face game.

    1. Re:My Javascript OS by the_humeister · · Score: 1

      Looks like someone beat you to it!

    2. Re:My Javascript OS by christurkel · · Score: 1

      It should run great on a pure Java OS http://www.jnode.org/

      --

      CDE open sourced! https://sourceforge.net/projects/cdesktopenv/
    3. Re:My Javascript OS by Anonymous Coward · · Score: 0

      But can it play XBill?

  48. Re:That's just dumb. And kinda cool. by DiegoBravo · · Score: 0, Redundant

    Knuth doesn't mention assembly.

  49. Re:That's kinda cool. by unts · · Score: 1

    I had to write a basic kernel in assembly during my degree.

    So I guess that counts as academic.

  50. GUI by Anonymous Coward · · Score: 0

    If alternative OS's are created everyday so one doesn't have to use Windows on their PC, then why in (insert your deity's name here) name do developers insist on imitating the Windows GUI?

    It's like saying, "Gee I can't stand the engine in that car, but I sure do love that hot pink base paint, green floral pattern, and crushed red velvet interior"

    1. Re:GUI by Tim4444 · · Score: 1

      imitating the Apple GUI

      There, fixed that for you. Actually if memory serves me right, Apple ripped off the idea from someone else and probably going back far enough you'll find adaptations from text based windowing systems and so on and so forth.

      oh, and i don't know how you've set up your desktop theme, but most of us don't see "hot pink base paint, green floral pattern, and crushed red velvet interior" when looking at the Windows GUI

    2. Re:GUI by Vovk · · Score: 1, Informative

      Apple stole their GUI (and mouse) from Xerox.

  51. Get off my lawn by Overzeetop · · Score: 1

    When I started out assembly programming the 6502 as a kid, I didn't have the cash for an assembler, so I coded with pencil and paper, hand assembled to machine code, and entered byte by byte.

    Kids these days...

    Of course, what I wrote was a lot closer to Hello World than a GUI OS. :-)

    --
    Is it just my observation, or are there way too many stupid people in the world?
    1. Re:Get off my lawn by Anonymous Coward · · Score: 0

      You should have just memorised the opcodes and entered them straight in :-)

      169,2,141,32,208,96

    2. Re:Get off my lawn by SL+Baur · · Score: 1

      When I started out assembly programming the 6502 as a kid, I didn't have the cash for an assembler, so I coded with pencil and paper, hand assembled to machine code, and entered byte by byte.

      You date yourself. The original Apple ][ had the mini assembler in ROM where you could at least type the assembler mnemonics in and have them machine translated to assembly code. That was removed in the Apple ][ plus :-(.

  52. kolibrios (GPL) forked prior to stupid license by openright · · Score: 1

    The original OS died from license suicide. Kolibrios continues the original OS under an open license.

  53. Re:That's just dumb. And kinda cool. by Anonymous Coward · · Score: 0

    The "entire" OS isn't written in Assembly (Quake and I think the web browser were not.

    How does this get modded informative? Has Slashdot readership sunken so low that the average geek on here doesn't even understand that Quake and a web browser are not parts of the OS?

  54. floppy... by mambodog · · Score: 1

    I was looking around for a floppy today because I wanted to make a boot disk, and I realised that, not only did I not have one, I also didn't know where I could get one, or even when the last time I've seen one was...

  55. Re:That's kinda cool. by El_Muerte_TDS · · Score: 3, Insightful

    I also had to create slides for a presentation for my degree, but that doesn't make it academic.

  56. menuet 32-bit is Open Source by Anonymous Coward · · Score: 2, Insightful

    Hey tards, you do know the 32-bit version is open-source, don't you? Go examine that. But, I bet none of you who are criticizing it being in assembly can even read ANY assembly.

    1. Re:menuet 32-bit is Open Source by shutdown+-p+now · · Score: 1

      MenuetOS is not open source at present. When there was only 32-bit version, it was open source (GPL). When a new version with 64-bit support appeared, that wasn't open source. Some people in the community were sufficiently annoyed by that to fork the 32-bit version and create KolibriOS.

  57. Re:That's just dumb. And kinda cool. by hcs_$reboot · · Score: 1

    The main gain is the size of the OS, it fits on a floppy! That may cope with some specific industrial needs.

    Besides, I'd have made a few routines in ASM then used a good old C program for the rest.

    --
    Slashdot, fix the reply notifications... You won't get away with it...
  58. System Libraries exception by tepples · · Score: 2, Informative

    Of course, if they had to integrate Quake with the OS parts, then wouldn't the OS also fall under the GPL like the quake source?

    It depends on how one defines "integrate". If "integrate" just means porting to its API, then porting a GPL app to MenuetOS doesn't bring the operating system under GPL any more than porting it Windows. Both GPL versions 2 and 3 have an exception for linking to an operating system's System Libraries.

  59. Cool GUI. by Pedrito · · Score: 2, Funny

    Wow, it's been since Windows 1.x that I've seen a GUI that looked like it was written in assembly. How retro.

  60. Re:That's just dumb. And kinda cool. by DerekLyons · · Score: 1

    I could imagine doing non-trivial systems in assembler, but mainly if the problem domain and its solutions are very well understood. When you see that 1% of your code is taking 99% of your execution time, you *could* tighten that code and get an immediate payback, or you could try understand the problem better in order to find a more efficient algorithm. If you can improve your algorithms, that's almost always going to be a bigger win.

    Assuming of course the 1% of the code monopolizing execution time is part of your algorithm (and a part you can improve in the HLL) and not in the 'overhead'. It should go without saying that you are also assuming the cause of the bottleneck is poor algorithms and not a quirk of the compiler or libraries you've linked.

  61. Am I hearing you correctly? by k.a.f. · · Score: 2, Informative

    Interestingly, their homepage does not tout execution speed as a motivation: "Menuet has no roots within UNIX or the POSIX standards, nor is it based on any operating system. The design goal has been to remove the extra layers between different parts of an OS, which normally complicate programming and create bugs."

    Layers complicate programming and create bugs? Really? As in, "the whole modular programming thing is just a fad"? If these guys can actually honestly claim that they program better in the big ball of mud paradigm, they must be super-geniuses, and trying to collaborate would be impossible for the normal geek anyway.

    1. Re:Am I hearing you correctly? by timeOday · · Score: 2, Insightful
      Well, they said "extra layers," not all layers. Obviously, what is "extra" becomes a matter of taste. But it is true that most OS's carry a huge burden of legacy compatibility. Another problem is "feature bloat" with lots of code to support features that weren't that useful after all. (For example, the POSIX apis for networking seem awfully obtuse, mainly because they treat TCP/IP as just one of many network protocols, even though nobody uses the others any more).

      All of this is just the normal software cycle - hopefully you start with a good design that represents the problems at hand at the time. But eventually the requirements change and the original design becomes insufficient, or outright irrelevant, or muddled by refactoring by people with different designs in mind (or outright hacking), until eventually you get a strong urge to chuck the whole thing and start over - which is what they are doing.

    2. Re:Am I hearing you correctly? by mrosgood · · Score: 1

      Layers complicate programming and create bugs? Really? As in, "the whole modular programming thing is just a fad"? If these guys can actually honestly claim that they program better in the big ball of mud paradigm, they must be super-geniuses, and trying to collaborate would be impossible for the normal geek anyway.

      modules != layers

      I'm a huge fan of removing extraneous abstractions, layers, extension points, gratuitous use of design patterns, silly third party libraries, etc.

      In my experience, API designers biff the modeling (abstraction) and then try to hide the problems with ever more shims and layers.

      Examples of my counterculture designs include DesignGridLayout, flogger, and LOX.

      Alas, programmers are unimpressed by simple solutions and persist in using productivity slashing and mind gelling albatrosses.

    3. Re:Am I hearing you correctly? by Anonymous Coward · · Score: 0

      I think you misread, he's saying that by removing the abstractions you are making programming more complicated (I'd have to agree) and therefore will create bugs (depending on the programmer's understanding of the system minus abstraction)

    4. Re:Am I hearing you correctly? by Anonymous Coward · · Score: 0

      For example, the POSIX apis for networking seem awfully obtuse, mainly because they treat TCP/IP as just one of many network protocols, even though nobody uses the others any mor.

      People don't use UDP or Unix Domain Sockets any more?

  62. Re:Fast due to assembly or fast because it's minim by Anonymous Coward · · Score: 0

    I would not say 'todays' compilers are any better than older ones. They have more optimizations. But that is at a cost. Even with say an 'new' compiler like from vs2008 you ended up with 7k just for 1 main without a printf saying hello world. In a COM/EXE you could do that with asm in DOS in less than 50 bytes and have the hello world. Now you probably could get that down to 2-3k if you strip it. I have also seen gcc and visual studio (most of them) produce awful code. Many times if you know what the compiler is doing you can rewrite your code to force it to produce the correct ASM. But that takes work too.

    ASM has its place that is for sure. But these dudes wrote a whole OS in it which is impressive. Sounds fun. They probably end up with a faster OS just simply because they can optimize right when they write it. They know which registers are free and can be trashed... While a compiler has to look ahead and figure it out and usually guess wrong. The person writing it would already know. The best optimizer is usually the thing holding our ears apart. Most of the time these days it is not needed as much. Also they can use ASM commands a compiler would never emit. Compilers tend to write fairly generic code and only use a subset of the x86 language. Would I write this way? No. I have other things to do and my code is 'fast enough' to get them done.

  63. Re:Fast due to assembly or fast because it's minim by TheRaven64 · · Score: 2, Insightful

    The one implies the other. It is very hard to write large, structured, maintainable, assembly code. If your goal is to write structured, maintainable, assembly code then you end up with small and simple code out of necessity.

    --
    I am TheRaven on Soylent News
  64. Re:That's just dumb. And kinda cool. by bzipitidoo · · Score: 1

    The choice for Assembly was to keep the design uncomplicated

    Then, so much for 50 years of programming paradigms intended to get a handle on the complexity of software design. I would guess an examination of the code will show it is not spaghetti and that they did at least structure it, and kept code and data separate. And if they did that, then like everything else done in assembler they did the programming paradigms by hand, which seems a bit silly. Keeping the design uncomplicated doesn't seem a plausible reason for assembler.

    Perhaps what they're getting at is higher level languages are too dogmatic and wasteful in their implementations of programming paradigms. For instance, I really don't see anything wrong with multiple entry points for a subroutine, though forbidding that by omission has been canon. We certainly have multiple exit points, why not multiple entry? And indeed, a big use of multiple exit points is to dodge around another of the limitations of Structured Programming, that being how to exit from the interior of nested loops without having to wastefully check the same condition at each loop. Yet somehow the cycles saved by allowing multiple entry points isn't worth the trouble. What was the most recent language that had provision for multiple entry points? PL/1?

    --
    Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
  65. Bosch by Saint+Stephen · · Score: 1

    I got into Machine Language (not assembly) for a while once and wrote the "bare minimum" machine language (just writing the bytes at sector zero of a virtual bosch HD.)

    I recall there was a simple character repeater (print the character the user typed on the terminal) that was like 3 bytes of machine language, something else interesting I could do in 13 bytes, and I could get the machine into 32-bit protected mode in about 35 bytes.

    After a while it wasn't too hard to think in Machine language, the assembler symbols weren't really necessary. I recall thinking how cool it would be if I got good enough at it that I could read my own binary as if it were source, so long as I followed consistent patterns (not talking about reading compiler output).

    Good times.

  66. Re:That's kinda cool. by Anonymous Coward · · Score: 1, Informative

    No, that's not academic, that's community college.

  67. Menuet32 is available under GPL since circa 2005 by Anonymous Coward · · Score: 0

    Chill guys, MenuetOS is not at all a new project - I wonder how it made it to /. homepage *now* - maybe, slow news day (or years, perhaps)? :)
    It's been under development since (pre?) 2005.

    Also, for all the FOSS fans, the 32-bit version is available under GNU GPL, although, doesn't seem to be maintained anymore (last update being from Aug, 2007):
    http://www.menuetos.org/stuff32.htm

    The first table on that page gives you kernel + apps sources.

  68. Re:Fast due to assembly or fast because it's minim by Anonymous Coward · · Score: 0

    Really, should be fast because of both. It should be more optimized, and therefore smaller while doing task in a more direct (less polluted) path.

    Just harder to program in than higher level programs.

  69. Floppy 'image' on CD or USB flash drive? by JSBiff · · Score: 1

    I think you can get around this problem, maybe, by creating an 'image' of a floppy disc, then either burning it to a CDROM (using mastering software that knows how to make a bootable CDROM from an image file), or writing it to a usb flash drive?

  70. So 85/86-ish by argent · · Score: 1

    AmigaDOS from the mid-80s was an OS that would fit on a 880K floppy, and didn't have to be written in assembly to do it.

    Among the features were a Macish (unnecessarily so, IMHO) GUI, real-time multitasking, and ... they hadn't invented the web browser yet, that came later. It would run in 256k of RAM but wasn't really happy with less than 512k. That's kilobytes, not megabytes.

  71. That's how EVERYTHING used to get done! by DutchUncle · · Score: 1

    Developing a new system today, everyone assumes they're working on an *existing* system with resources and tools. How do you think people bootstrapped systems together in the bad old days? And that's why some of the early stuff took so long, and the pace of change is so much faster now - there's an entire infrastructure available today that was a fantasy when I was in school. Assembler was the course that separated the serious majors from . . . normal people. :-)

  72. Assembly != Optimization by DissociativeBehavior · · Score: 0
    Just because it is written in assembly doesn't mean it's optimized. Assembly is only useful to implement the most optimized algorithms, otherwise the result is just fast "slow code".

    Michael Abrash's Graphics Programming Black Book is a great book to really understand the philosophy behind assembly optimizations.

  73. Car Analogy by Anonymous Coward · · Score: 0

    "For well over a decade this meme has been out there and for well over a decade there has been continual performance improvements to those compilers"

    For close to a century now, cars have been getting continual performance improvements, and continual efficiency improvements. Does this mean I can run faster than a car?

    That said - I have no problem with the idea that there are situations in which hand crafted assembly code will be faster than compiler optimized code. However, most programmers today will not be able to do that, or even identify that it could be done in a given situation. I would bet that the majority people who are paid to write code today have never even written a line of assembly for any architecture.

  74. This is better than QNX how? by rbrander · · Score: 1

    The Calgary Unix Users Group got a fine presentation over a decade ago on QNX, a real-time oriented OS that was waved about on a floppy at the meeting. According to Wikipedia, the "earlier" versions fit on a floppy, so perhaps no longer true...but the exact size is not that relevant with the floppy itself dead as a doornail.

    http://en.wikipedia.org/wiki/QNX

    The thing about QNX is that it is a Unix, POSIX-compliant, no less; and in contrast to Menuet being closed, QNX was recently freed up.

    Kudos on the assembler work, though... the great Steve Gibson (http://en.wikipedia.org/wiki/Steve_Gibson_(computer_programmer) )
    would be pleased

    1. Re:This is better than QNX how? by Shadow-isoHunt · · Score: 1

      Probably not - the OS is too open! Hackers can use raw sockets to take down the internet! And I bet no ports are stealth...

      --
      www.isoHunt.com
  75. Re:That's just dumb. And kinda cool. by Anonymous Coward · · Score: 0

    Typically, you get most of your performance gains by rewriting 5% or less of the software in assembly [Citation needed... :-)].

    I agree, even without the cite. However, keep in mind that this is in reference to application layer software, not OS layer software. Your OS is going to be doing all kinds of stuff all the time that needs to run as fast as absolutely possible in order for your application layer to have a better slice of the pie.

    There is not a good excuse for using anything other than assembler to write the Kernel and hardware drivers, because ANY wasted cycles impacts all other software on the system.

  76. There has already been an OS written in assembly by microbee · · Score: 0

    It was called DOS.

  77. Incredible by No2Gates · · Score: 0

    I am amazed that in this day and age of bloated EVERYTHING, that someone would write a operating system WITH a GUI and be able to put it on a floppy. I didn't think anyone knew assembler anymore. I thought it died with ADA and FORTRAN.

    Kudos to these guys !

    --
    Every time you call tech support, a little kitten dies.
    1. Re:Incredible by CompMD · · Score: 1

      ADA is still very much alive. Most of the fighter aircraft used in the USAF have computers running ADA software.

      FORTRAN is still very much alive. I believe a new spec came out recently even. Several analytical programs in science and engineering heavily rely on FORTRAN. Many structural analysis and computational fluid dynamics programs are written in FORTRAN.

  78. Quake... by Anonymous Coward · · Score: 0

    Wow, so the criterion to have a great OS is to run Quake?

    Windz is great then

  79. RTFA! The guy explains the decision by Anonymous Coward · · Score: 0

    The 32-bit version of Menuet was released under the GPL, but the 64-bit version uses a non-open-source licence that is free for "personal and educational use". Why did you decide to licence the 64-bit version differently? Has this had any impact on encouraging people to join the effort?

    Ville: With a completely new type of open source project, people seem to have strong opinions about what direction to take. Even up to a point when time is actually spent more with disputes than doing the actual coding. And when that happened, I decided to concentrate more on the original path of Menuet with the 64-bit version and with a new type of license. However, I don't have anything against open source or possibly opening up the Menuet64 source later. But with the current licence, I'd say the people are a bit more committed and willing to put more effort in to a new feature.

    You shouldn't call their licence choice stupid without knowing their reasoning, at least.

    1. Re:RTFA! The guy explains the decision by Desler · · Score: 1

      I read the article, it's still a stupid license.

  80. Mac OS 6 by 4D6963 · · Score: 2, Interesting

    So it's written in assembly, has a GUI and boots from a floppy? Yup, Apple did it (Mac OS was written in 68k assembly up to System 6)

    And no offense but Mac OS 6 looks like it had a more sophisticated GUI than that, colour depth aside.

    --
    You just got troll'd!
  81. In five years... by tsa · · Score: 1

    Mark my words: in five years from now we'll have Menuet on the desktop everywhere!

    --

    -- Cheers!

  82. Re:Menuet32 is available under GPL since circa 200 by amn108 · · Score: 1

    I think you need to chill with us then, because 1) This article is not about the debut of the OS, it is about the "Behind Minuet" interview, which is not exactly the same thing; and 2) Slashdot covered the real debut much earlier than even 2005 (check the date on the article) - http://developers.slashdot.org/story/01/09/05/2248252/MenuetOS-Debuts

  83. Re:That's just dumb. And kinda cool. by Citizen+of+Earth · · Score: 1

    The trick in any kind of programming is to learn to express *ideas*.

    I think is this a significant problem with hand-written assembler. The programmer will attempt to give the code structure and simplicity to improve understandability and maintainability, but a compiler will attempt to produce the optimal code regardless of how readable it is. For example, it will unroll loops and move fragments around and sacrifice space for speed. For the bulk of the code, a good C compiler will likely produce faster code than hand assembly.

  84. Quake? by Yvan256 · · Score: 1

    How about releasing the latest MAME for Menuet instead?

  85. Minuet? by Anonymous Coward · · Score: 0

    For a sec, I thought someone had resurected the Minnesota Internet Users Essential Tool! I used this for years until I switched over to the Mutt :-)

  86. Not open source by Anonymous Coward · · Score: 0

    It reeks of piss and shit.

  87. Augh... by Anonymous Coward · · Score: 0

    This may just be the alcohol talking, but man, assembly really gives me a headache!!!

  88. Straw man argument by Anonymous Coward · · Score: 0

    Or like publicly playing covers of simple songs? Or redrawing a simple logo and using it for your own purposes? The copyright is still there. Without the license, you wouldn't (legally) be able to do ANYTHING with this.

    That's a straw man argument if ever I did hear one. Both of the examples you cited involve using someone else's copyrighted material to make money, whereas disassembling a program image is much more akin to looking under the hood of your car to see how it works. Clearly, looking under your car's hood is not a copyright infringement, nor should it be - although there are undoubtedly lots of people who would love to be able to impose such ridiculous limitations, and yet more who falsely believe they already have.

  89. Want a Win32 OS in ASM? Try DOS + HX DOS Extender by toejam13 · · Score: 1

    The HX DOS Extender for MS-DOS was written 100% using assembly. It is a Win32 compatible API layer for DOS. Source code is available.

    Granted, it just thumps to 16-bit BIOS calls, but it does make for interesting study.

  90. Why?? by Anonymous Coward · · Score: 0

    C code can be written in such a way that there is virtually no loss in performance over assembly and way more maintainable. I tuned some bitblit operations a long time ago to some graphics chips that were withing 1% of the assembly code performance.

    Hopefully it has more than just "Load reg 1 with 0" comments. (hmmm... hopefully it has comments)

  91. Re:That's just dumb. And kinda cool. by SL+Baur · · Score: 1

    What was the most recent language that had provision for multiple entry points? PL/1?

    The earliest standardized versions of "C". The entry keyword was removed after awhile. It had provisions, but was never implemented. I guess there just wasn't a real world need.

  92. Re:That's just dumb. And kinda cool. by SL+Baur · · Score: 1

    The design goal has been to remove the extra layers between different parts of an OS, which normally complicate programming and create bugs."

    So long as you have a very limited target platform that's doable. The two most important layers are between user & system mode and IRQ processing. The former can be eliminated in "real time" versions in Linux[1], there's nothing you can do about the latter.

    I applaud these guys for coming up with competition - Competition Is Good. I don't agree with their approach - Assembly Is An Inefficient Use Of Resources. Close sourcing their 64 bit kernel also seems sort of stupid especially with such a target niche audience and lessons learned in the last four decades.

    [1] I can talk about Linux, I think I'm still under NDA regarding the System V/386 Unix kernel.

  93. Haskell? You sure? by tygerstripes · · Score: 1

    Haskell is very powerful in its elegance, but it was created to be - and is mostly used for - academic and research purposes. True, the IO Monad allows you to interact with the physical world, but it's seen by many purists as a kludge (unfair, but that's how it is), and I wouldn't want to touch metal with it. Even if you could work around these hypothetical concerns, it's still a fairly niche language and would be very difficult to maintain on a larger scale - there just isn't a big enough interested and skilled community to do it yet.

    It's a grand idea, to be sure, but I would think Haskell is the last language you'd pick for an OS. First we need some elegant & powerful, competitively capable Haskell apps. If you can get a suite together that demonstrates the language's potential versatility, then you might have a case for coding some of the higher-level OS stuff.

    --
    Meta will eat itself
  94. minor detail by woolio · · Score: 1

    I also work with large amounts of assembly code for a living.

    I've noticed that (mediocre) embedded compilers may generate poor code because many developers write code without thinking about how it would actually be assembled.

    I've seen cheap compilers not handle the following type of code well:

    for(i=0;i1000;++i)
    {
          a[i] = b[i+1];
    }

    Although the processor may have instructions that perform an indirect read and auto-increment in a single cycle, a little arithemetic can fool the compiler into not using that instruction. This leaves the developer with two choices: (1) Rewrite the routine in assembly [and spend 1-2 days unrolling and pipelining loops by hand, etc]. (2) Be a bit more clever and help the compiler out:

    b2 = &b[1];
    for(i=0;i1000;++i)
    {
          a[i] = b2[i];
    }

    The compiler may look at that loop and do the right thing (and use a single instruction that reads and auto-increments versus using several instructinon to read the array element, do arthmetic on the pointer (which can require several instructions on some architectures), and then update the pointer. With such code, the compiler will generate code no worse than a highly skilled person (with some extra time) would have done.