I want to know how because as weird as this sound I feel distant from my x86 Intel Celeron and I want to be able to know EXACTLY how the compiler converts codes and actually "sends" them to the processor and how does the processor accept them?
Also, how can I do that myself(troll-ish, I know, but just curious)?
There are several steps during compilation, the original sourcecode may be transformed in several intermediate forms before becoming an actual executable file.
You can write directly in a binary file that can be directly executed by the processor but it would be really painful ( x86 architecture has lots of instructions )
If you want to write really low-level programs you can write them in assembly which is the closest human-readable thing to the processor.
The difference between assembly and machine code is mostly that assembly is written in words. Assembly languages usually define a number of useful macros, and allow you to use labels and stuff like that, but other than that assembly code usually resolves 1:1 to machine code.
As I said, you can write in machine code. But you need to know all the values for the mnemonics and registers.
The most tricky part with x86 architecture is that instructions which would have the same mnemonics in assembly have different opcodes in machine code and maybe different instruction size.
If you want to write directly in binary you'll need to get the specification from your CPU vendor and for your operating system.
I believe the language you're looking for is called 1GL. This is a quote from wikipedia:
The first-generation programming language, or 1GL, is machine code. It is the only language a microprocessor can process directly without a previous transformation.
It's not called 1GL, that's just an abbrevation for 1st Generation Language. Saying machine code is called 1GL would be equal to saying C is called 3GL.
Saying machine code is called 1GL would be equal to saying C is called 3GL
The information was from Wikipedia, not me. Still, according to Wikipedia, 1GL is the lowest level language you're going to find. By the way, 1GL is an acronym, not the actual name.
This website backs up Wikipedia: http://www.javvin.com/softwareglossary/1GL.html
abbreviation
A shortened or contracted form of a word or phrase, used to represent the whole: Dr.
acronym
An abbreviation formed by (usually initial) letters taken from a word or series of words, that is itself pronounced as a word, such as RAM, radar, or scuba; sometimes contrasted with initialism.
Opcodes are the numeric values which tell the processor which instruction it has to execute.
Assembly replaces those numeric values with symbolic mnemonics.
An assembly file is basically the same as an executable file but the instructions are written as text instead of binary data
Assembly would translate into OpCode yes. I worked with OpCode on an emulator in college, for the longest time I thought OpCode = Assembly but then when I started opening programs with Olly Dbg again I noticed that Assembly has many more functions. OpCode would look like a set of Hex numbers '3B' or something like that.