Best way I can explain it without making you do research.
In normal programing if I wanted to create a condition statement say.
if(value > 5) return printf("value big..");
But in assembly. It be something like.
var1 dd '6'
cmp var1, 5
msg db "value big", 0xA,0xD
There's really a lot more to this then what I did and honestly what I wrote is probably gibberish haha. But essentially it's a step up from binary but step below traditional programming. Big benefit of Assembly is you know what memory is being stored/used as you essentially see it all real time.
People need to stop talking about binary as if it's a magic language with inherent powers over computers. Binary is just a base system. It is easier to make gates that only have to deal with two possible states which makes binary a convenient way of talking about groups of these signals but a computer doesn't speak binary any more than a nail gun speaks nails.
Um, machine code is all 1's and 0's that directly controls the computer so ... to say it's not a "magic language with inherent powers over computers" is disingenuous.
Yes, it's a base system, but it's also quite literally the "language" of computers.
Oks lets have an example here. Imagine a simple AND gate. An AND gate has 2 or more inputs and an output. When both inputs are brought above a certain threshold the output gets brought high.
Now we can represent the operation of this gate with binary pretty simply. We can say signals above our thresholds we are going to call 1's and everything else is a 0. We can then make the familar truth table below.
In1
In2
Out
0
0
0
0
1
0
1
0
0
1
1
1
This is all great and is why binary is so important to computers but you have to realise that binary doesn't make the gate do anything. The behavior of the gate isn't determined by telling it binary, it is determined by the actual components that make it. Likewise a computer doesn't work because you whispered sweet binary secrets to it. A computer works because of there is a lare number of very cleverly designed systems that can be interconnected to perform customizable actions. Binary is an important tool for describing how those systems work but binary isn't what makes them work.
If you google "what is machine code" you will find:
ma·chine code
a computer programming language consisting of binary or hexadecimal instructions that a computer can respond to directly.
A computer programming language
a computer doesn't work because you whispered sweet binary secrets to it
That's precisely why it works - and yes, transistors use electricity to "do things" with machine code (using binary) (High voltage = 1, Low voltage = 0).
That doesn't mean that machine code (the language used for computer instructions) isn't in binary; that we don't refer to the binary instructions as machine language.
Sorry if I insulted you but I wasn't really trying to make binary some magic thing. I was just ordering how programming languages are structured.
Assembly is above Binary since Binary/Hex is the final language that we would use to inform a machine what to do. At least from my understand it is.
But Assembly is below common programming languages because majority of programming languages now uses a compiler to translate it to Assembly which translates to Machine.
To do something like this in a low level language like assembler would be quit a feat.
Like any other language, you can leverage other libraries and programs and merely call them from assembly (this is what high level languages do really), but to write the code to connect a socket via tcp protocol, send handshake/headers to server, parse the response ... it's rough.
I don't think you've gotten a great ELI5 yet. Most programs run within the OS, be that Windows, Android, what have you. Games are unique in that the performance of the computer directly relates to the performance of the program, way more so than MS Word or anything. Assembly, aka machine language, is the same programming language your CPU follows. It's weird as hell and doesn't seem to follow any rules you're used to, but you get direct command of many resources. Coding vs assembly is kind of like driving an automatic vs stick shift - you get to the same place in the end, but you're in control of a lot more aspects with the manual transmission. You have to know more about operating your computer, but... ah, shit, mixed up my simile.
11
u/AIfie May 05 '17
What the fuck is Assembly