Pure assembly and 16 fast CPU cores

Back in the days of early 80s glorious feats were done with x86 assembler and DOS operating system was able to come to the light.

It squeezed a lot of power out from stupidly slow Intel 80286 (hence the term x86 which was widely adopted and still used) CPU.

There was no "high level languages" yet much in use in those PC programs that did one thing and tried to do it fast and efficient, much like how UNIX functions albeit giving 100% of the PC performance to one single program at one time as this was the soul of DOS systems, they were not multiuser systems.

But the thing is, they did a lot with having very little in terms of memory or CPU crunching power. Memory was 640 kilobytes, thats right about half a megabyte.

WHAT COULD BE ACCOMPLISHED TODAY with 16x PC-CPU cores, 16GB+ memory if the software that is being run on it is written purely in assembly? Some minor C code is allowed to be thrown in if its optimized properly. Would it be possible to create incredibly powerful number crunching software for example? It wouldnt necessarily even need a GUI, just CMD-line. But that depends how and what for it will be used and most importantly by whom.

Attached: assembler tetris.png (637x398, 76K)

Other urls found in this thread:

codeproject.com/Articles/1182724/Blowing-the-Doors-Off-D-Math-Part-I-Matrix-Multipl
countercomplex.blogspot.com/
archive.vn/RIFgW
menuetos.net/
en.wikipedia.org/wiki/Amdahl's_law
en.wikipedia.org/wiki/Category:Software_written_primarily_in_assembly_language
yourlogicalfallacyis.com/the-fallacy-fallacy
twitter.com/NSFWRedditGif

Won't make much of a difference

No different modern software is INCREDIBLY advanced and compilers already do all the optimization possible.

If you've got performance issues just use modern hardware, duh.

The compiler is smarter than you. The only speed gain you get by going asm is to change your program to be something the CPU likes more.
Also most softwares on the 286 era used a combination of high level language for the "slow loops" and ASM just on the parts where it mattered.
Only crazy people like the zsnes author that did everything in asm.

codeproject.com/Articles/1182724/Blowing-the-Doors-Off-D-Math-Part-I-Matrix-Multipl
hand optimized matrix multiply beats the compiler by 6.57x

Modern CPUs are all about pipelining. Unless you can hand write optimized non-linear assembly, you're better off just using a high level language.

Jow Forums is dead.

Compilers these days are so good that most people would not be able to write better hand-written assembly. An application large enough to need hand-written assembly on modern hardware would be necessarily so complex that assembly programs would have too many bugs to be practical.

codeproject.com/Articles/1182724/Blowing-the-Doors-Off-D-Math-Part-I-Matrix-Multipl
hand optimized matrix multiply beats the compiler by 6.57x

That's not JS I don't understand a thing.

>Would it be possible to create incredibly powerful number crunching software for example?
people already do this if they think they can out-run an optimizing compiler, but they do it for discrete sections of the code that need to be optimized rather than writing a horrifying buggy/unmaintainable mess of assembler
now show us a proper modern, complex application written purely in assembly like the OP describes, not small hand-optimized segments that people still do today when warranted.

google "star journey" and "the witness"

It's really not that compilers are "so good" these days, it's that CPUs have so many hardware level optimization techniques that what constitutes efficient assembly is completely different from the 80s. It's really easy for a compiler to take advantage of that, not so much for a human.

Nobody cares, m8. OP is talking about writing an entire program, not about a number crunching scenario in a tight loop. Those are two entirely different problems. A lot of programs use embedded assembly for stuff like that for scientific applications and encryption, but it's not something that typical programs can benefit from much if at all.

this shit looks like exactly what I described at best; blocks of small and optimized assembler code strung together by higher level languages handling the shit nobody would ever want to write in assembler

don't worry, when you actually start writing code you'll learn why assembler isn't universal anymore, even in OP's "glorious times" everyone who could afford more powerful hardware was using high-level languages instead.

look at them go!

Attached: goal-posts-moving[1].jpg (640x426, 157K)

what are you talking about? OP was always talking about programs fully written pure assembler. are you retarded or just illiterate?

nobody's arguing that assembler isn't sometimes used in cases where it's warranted on performance grounds, people who actually read the OP were always arguing against the stupid rose-tinted hipster viewpoint that everything should still be written in assembly just like the "good old days" when security, portability and long-term maintainability were incredibly remote concepts on personal computers.

>o-only 90% of the program benefits from assembly! see! the c-c-c-c-compiler is smarter than you!

once again, are you illiterate?

People who ask these questions tend to forget that hardware was much simpler back then. I'll use a more extreme example for illustrative purposes: people say that games before were made in C/ASM with no/little framework/engine support. But at the time, we didn't have a programmable pipeline, it was fixed function. On consoles it's even easier because all the primitives are part of the machine. So you just had to put your resource pointers on the right registers and call an interrupt and everything would magically render exactly as you would expect. Now you have to actually program the rendering routine in excruciating details, so it turns out it's actually slightly harder to use full-fledged engines on modern hardware than to program from scratch on old hardware.
The same idea applies to modern CPUs vs old archs. Now you have a billion subsystems that you need to move your data into before you can do fast ops on them before you move them back and you generally have to program a significantly larger amount of the routines that used to be hardware-level available.

Okey then genius, whats wrong with this asm statement?
mov rax, 0

>0.000001% is 90%
Pottery.

user I'm very curious on learning how old machines used to work, do you know where I can lurk more?

I wish we had hardware with modern performance but with 80s simplicity. Fucking CIA niggers.

You cant read from null

Moron. Try again.

Considering modern complexity exists to improve performance, what you're asking for is simply impossible. But just get into microcontrollers/embedded systems if you just want simple designs clocked to ridiculous speeds.

If you want to zero a register you xor it with itself instead of moving zero into it. That's special-cased in the instruction decoding and I think it also saves you a byte or something over the encoding for moving an immediate zero.

>>There was no "high level languages"
You mean like COBOL, Fortran, BASIC, Pascal etc?

hand optimized division tricks are usually 3x faster as well

I just assumed he meant on personal computers, which was generally true although plenty of high-level language compilers and development tools existed and were used.

Compilers were pretty shitty back in the day, so beating them was trivial. CPU's were also much simpler back then which helped make it easier to write assembly for.
If you want high performance nowadays, microoptimizations like barely matter.
What you really should do is use tools for profiling performance hotspots and then analyze those.

based and terrypilled

asmfags can keep their shitty code, I write my code directly in binary

if you memorize the opcodes it's not that hard

This. It's only more of a pain when you need to manually convert data representations.

Most software developed for MS-DOS was written in Turbo Pascal or something similar. Sure, some nut-jobs liked to write assembler code but most of us didn't. There's wasn't any reason to then and there's no reason to now either. C compilers are really good at optimizing. If you compare say Java to C then sure, there's a difference. But saying we should go back to writing everything in assembly is silly.

>C compilers are really good at optimizing.
t. knows nothing of assembly or compilers

>WHAT COULD BE ACCOMPLISHED TODAY with 16x PC-CPU cores, 16GB+ memory if the software that is being run on it is written purely in assembly?
Realistically speaking, less than what is currently being achieved with higher level languages. The abstraction they provide is extremely useful when working with very, very complex codebases. The code is still written and maintained by people, at some point using only ASM simply becomes impractical and unmaintainable.

There are other factors to consider as well, for instance how you're not actually programming for a single processor in particular nowadays, but for shitloads of models which use the same core ISA but might not actually support all instruction sets. It's not as easy as targeting one single CPU model which was also a much simpler device than a modern CPU, plus modern compilers are pretty damn good. Maybe you could produce better code for very particular parts of your project, but I seriously doubt you'd produce better ASM overall when you've got a project which hits millions of lines or such.

high level languages make it more difficult to maintain and write, not less.

>t. newfag who doesn't know what "t." means
he's not wrong, in the general case a modern optimizing compiler will generate better and more compatible code than your inexperienced ass ever would, makes a great point on processor targeting as well
you have literally no fucking idea what you're talking about lmao

You mean software by 3rd parties

Stuff by Microsoft was never written with Pascal

Actually it is mostly games that ware Pascale

It does not need to be necessarily wery complex software however

What if its designed to simply perform some Fourier Equation with insane speeds?

To only study a crystalline structure of some molecule?

It will be almost purely maths then.
Maybe it will be 100 lines of code or something.

>You mean [most of the software people bought PCs to run]
imagine being so underage that you think everyone was running a pure microsoft stack on a system that was literally defined by its third party software and hardware developer base

people already do this and have done it for decades

This guy has said some wonderful things regarding this topic:
countercomplex.blogspot.com/
I highly recommend anyone who's not cancerous neo/g/ read his entire blog.

saving this: archive.vn/RIFgW

I, too, blaze it 420 all day err day. Dude weed lmao, only neo/g/ doesn't do weed.

menuetos.net/

It would be extremely difficult.

x86 doesn't have exposed pipelines without interlocks, x86 have had OoO execution since the 90's.

for you

I had an university teacher specialized in electronics who gave us classes in Computer Architecture.
Being a specialist in the 80s, he tends to have a good knowledge of this, that's the actual shit he worked with back then

Au contraire my javascrip noob, things like using xor for clearing a register is very important. Why else would compilers make an effort to do so?
Shorter code, no artificial dependency on a literal load, potentially smaller uop encoding or even removal of the xor at the register rename stage.

Microsoft wrote most of their software in Pascal?!? Ever heard of Windows?

not an application

>multiple applications aren't a single application so it doesn't count
Please don't. Literally just pick any of them then. The kernel, the userland, the media player, whatever else.

why didn't you just pick a specific example yourself then? if anything that is a perfect example of why pure assembly projects are terrible considering it's
>targeted to a single ancient Athlon 64 development system with no support for newer instruction sets that could significantly enhance many workloads
>has no applications other than the basic tools the developers themselves have supplied for it (really, a media player is a selling point? what year is it?)
>is a closed source and likely unmaintainable mess that hasn't progressed at all in the years it has existed
>has poor hardware support

seriously, what argument are you trying to make with this crap? it's a toy/demo/proof of concept, nobody uses this for anything important.

>why didn't you just pick a specific example yourself then?
You're really being pedantic over this? Why would I present multiple examples instead of 1? Fuck off. You're not trying to discuss, you're trying to argue.

menuetos.net/

>menuetos.net/
is it better than linux

>Realistically speaking, less than what is currently being achieved with higher level languages. The abstraction they provide is extremely useful when working with very, very complex codebases. The code is still written and maintained by people, at some point using only ASM simply becomes impractical and unmaintainable.

Abstraction and modularization is EXACTLY what can render assembly useful in a program. If you properly break up your code into independent parts, it'll make it trivially easy both to profile where a CPU bottleneck is, and to replace a part that has a clear input and output with an assembly alternative that has the same (and ONLY that part).

because I asked for a single complex application, not a collection of simple basic shit you're trying to pass as a whole application because you have literally nothing else to contribute to this discussion you claim to want so badly while you're just replying with one-liners and not even reading my replies to them fully?

stop projecting so hard and actually offer some discussion if you're interested in it, because all you're doing right now is screeching "s-stop being pedantic!" and providing literally nothing else while I've already attacked that example as a whole and received nothing back from you on it

...

>my arbitrary and sliding level of complexity
nah dude, that aint no discussion. An OS with a full application suite aint trivial.

Not the guy you're replying to, but your reaching is incredibly pathetic. That's all.

Attached: untitled-5-copy.gif (325x325, 2.48M)

why is this thread attracting so many illiterate retards.

Each abstraction allows dumber people to learn to code.

it's a simple multitasking operating system with some basic net clients, an IDE, and a shitty media player, single developers could do this shit in the 80s, no matter how you spin it's not really that impressive.
>but he showed you a useless toy operating system with pretty windows and a MEDIA PLAYER! you're moving the goal posts!
wow what a great discussion we're having, I truly feel BTFO beyond belief right now with these pictures of goalposts and funny cat gifs

seriously fuck off you stupid hipsters

This reads like self convincing.

Yet it's true. Windows was MSDOS software from the beginning if you didn't know that, Windows and most software for it was written in Pascal.

Sure thing, buddy. Go tell your handler you won an internet argument. Go on now, be a good boy.

Attached: 1376727286524.jpg (500x427, 47K)

if this is all the "discussion" I'm getting then yeah, guess I'm good, you can have the last word if it makes you feel special

How about GeoWorks then? Operating system with GUI and productivity software (spreadsheet, drawing program, word processor etc.) written in assembly.

aren't the modern versions a mixture of assembly and C code?

The "discussion" stopped when you insisted on holding your ground despite being proven wrong several times. You're a weak, pathetic man, incapable of admitting defeat.

I usually take care to always be respectful, even on 4channel, but you 100% deserve me fucking with you, so what the hell. I'm indulging myself.

Attached: 1337538838523.jpg (400x504, 47K)

C, C++, assembly and C#. Probably a few more.

>name ONE(1) application written in ASM that's good, I dare you
>an OS isn't impressive enough
>several media players aren't impressive enough
>web browsers aren't impressive enough
>roller coaster tycoon isn't impressive enough
>wow you can't even name 1 thing, pshh later kids

fucking kek
how many levels of autism is that self righteous dildo on

That’s cool and all, but are any of you actually using MenuetOS or posting from shitty old asm web browsers that don’t comply with any modern standards and can’t actually display any web pages?

Is this some kind of trick question because it's not related to what the original user asked for.
They said a modern, complex, application written only in ASM. I provided several but they don't qualify because I don't personally use them and they don't personally find them impressive. So it's all invalidated.

Yeah, you’re all high fiving each other over some retard tripping over his own logic but still all you’ve posted are crap not even you want to use that doesn’t really further the OP’s interests or the pro-asm side in general.

>WHAT COULD BE ACCOMPLISHED TODAY with 16x PC-CPU cores, 16GB+ memory if the software that is being run on it is written purely in assembly?
en.wikipedia.org/wiki/Amdahl's_law

Why assert that as anyonone's intention? What the heck.
You can't speak for OP, you don't know what my intention was, and you're not every reader either.
This is madness of some kind.

In isolation, standing alone in the reply chain, someone asked for something and it was provided. As has been typical in the thread, the goal keeps moving.

Alright, but this thread is pretty clearly and asm circlejerk and I’m just noting that none of the asm stuff you guys have posted are really that good.

I'll bet your car has 8 steam engines in it

No x86 comes from the 8086 which was one generation x86 prior to 80286

Unix which was around at the same time and xenix(Microsoft licensed AT&T Unix) which ran on the same computer as IBM dos(msdos) which was a multiuser system

what was wrong with rollercoaster tycoon?

I guess RCT is alright, but that’s a game. I’m more talking about the non /v/ stuff.

Pretty sure PC/IX was still single user due to no memory protection, maybe Xenix was different.

woah that goalpost teleported behind me

en.wikipedia.org/wiki/Category:Software_written_primarily_in_assembly_language

How desperate are you guys to worship asm? You’re just nitpicking people’s posts looking for anything they might have overlooked thinking it invalidates everything else they’ve said that you haven’t even tried to argue against.

is this the academy of goalpost teleport spells?

Is it next to the academy of deluded straw grasping?

Hello newfriends! Sorry to intrude on your upvoting session, but I’m here to remind you all that crying logical phallus is in fact not an argument in itself, and your points must still be substantiated if you wish to be taken seriously.
yourlogicalfallacyis.com/the-fallacy-fallacy

>WHAT COULD BE ACCOMPLISHED TODAY
Significantly slower development process, smaller feature set, and limited cross-platform availability.

>give me examples of ASM being good
>lmao why are you guys worshiping ASM

People already do that as far as I know. Writing (small) parts in ASM is practical and can be useful, yeah. That's obviously different from OP's question about writing purely in ASM and nothing else though.

most algorithms you can write in C or the equivalent it will generate 100% optimal assembly, the times where you gain anything from going straight to asm are rare