0

Hi there
Sorry wasn't to sure where this was supposed to go. I am interested in the lower level of computing and was wandering how to build a language, or program such as visual studio?

I have gathered it goes from the higher language and gets compiled into assembly/machine code and is then finally put into bit code.

I am not trying to develop a language or anything at the moment, i am curious about how exactly one is constructed and what type of design documents are required. How would you develop a loop for example? I have looked into the history some time ago of when different loops where developed.

The way i understand it is that a computer is effectivly a lot of switches with 1s and 0s. When the switches are in a certain position a certain number/colour etc is acheived.
How do you tell the binary to be a colour in graphics or a number in the CPU for example?

Thanks for any clarification

5
Contributors
9
Replies
10
Views
6 Years
Discussion Span
Last Post by MosaicFuneral
0

This book explains everything you'll need to know on computational theory, starting from the bottom with boolean logic into chips into machine code into assembly into virtual machines into language into compilers into operating systems:
http://www1.idc.ac.il/tecs/plan.html
http://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/026214087X

It's a relatively short book of 340 pages and if you can grasp its principles; then congratulations, you might have just learned more than what you study in four years of CS at school, on the suject.

Edited by MosaicFuneral: n/a

0

Awsome thanks

Just a few quick questions. I have built and simulated a basic ALU that allowed for addition, subtraction, overflow and bitshift. It all worked fine and was tested on board with lights and a reprogrammable microprocessor.

This was purely user controlled. I don't quite get how software controls the electrical signals.

Is an if statement in Java the same to the computer as an if statement in C++ for example? I have seen automata and string acceptance but i'm assuming this is more relevant to compilers then the actual language?

How would something like a float and int be different? does a float use a bit shift to make it a decimal number?

I'll have a look at the online forms soon Many thnaks for those.

0

I love how much you are asking.

If statements are simply a high-level representation of logic. A computer (at least an x86 (Intel) based one) evaluates a condition and stores information in internal buffers, and then a call is made to jump if the the condition is met.

Int and float are different in how they are interpreted. A compiler can interpret both int and float to be 32-bit data structures, but the int is used as a single integer while the float can be interpreted as something like a sign bit, then x bits for an exponent, and the rest of the bits being the number, which is then understood to represent a certain number (such as 3.14159).

I hope this helps.

0

Many thanks for the help

How do you integrate the higher level language to the computer hardware. I understand this is an extremely complex and long-winded problem.

Is the general process to go from the buffers and logic gates in the process to then be translated to assembly language? And then this can be turned into a higher language?

Do you require some kind of OS kernal to be able to transfer down between languages?

Sorry but to go back to my original question if for example in c++

someone was to do if(i == 1)

and this was to translate as something like jump to A6

if someone did the same in java if(i == 1)
would this again be jump to A6?

Also is this hardware dependent as different hardware has different registers etc?

could an OS kernal be produced to work out the hardware and which registers to use and then map this information to the language?

Thanks again as i said i understand this is a huge complex area, but as just wandering if this was along the right lines and if languages are very similar in the way hardware uses them or if the same commands can be interpreted differently in hardware to acheive the same results?

Thanks again

Edited by eskimo456: n/a

0

Here are some books that may help you further with your inquiry:

Computer Science Handbook, Second Edition (or later if there is one)
Operating System Concepts (by Silberschatz)
Computer Organization & Design (by Patterson and Hennessy)

Those three have answered several of my questions about low level computing works. The computer design book covers efficient arithmetic, logic design, instructions, and several other key topics for low level computing. The operating system concepts book would help you figure out how languages and the operating system interact with each other at a relatively low level. And computer science handbook covers just about everything that deals with computing written by some of the top people in their respective fields. Just throwing in my two cents.

0

Awsome thanks
Unfortuantly I am busy doing graphics stuff, but will deffinatly have a look at them when I can. One last question are all languages built in the same way or are there drastically different ways depending on the language?

For example is C++,openGl and openCl all built like this or are there different techinques depending on the langauge?

Are things such as Matlab built using this technique as well?

Also do people build new languages off of old ones? I know of C++ being built off C and C# being based on C++. Is this just the syntax and way it runs or is part of the language physically written in the language?

Many thanks for everyones input

0

Hi there again sorry yet more questions on this. upon having to learn the way of doing things you only learn the current way with comilers etc.

How do you program directly onto the computer hardware? I've seen things that allow you to program in assembly language, but this is obviously an abstraction from the actual architecture.

How do you program a computer to be able to say something easy like 4+6?
I understand the principle of inputting the binary represntation ad storing it in memory address and then inputting them into an adder and saving the output.

I don't get how you do this without any software initially? Is this responsibility in the BIOS? If so who writes the BIOS and how?

I have had a look at a few of the links and they seem really helpful. I am still having problems getting from the abstraction stages. I have been taught how to physically create an ALU and operate it manually at an architecture level, however without software.

Can you download software that does it similar to a compiler? (If so how can you make the compiler without the compiler?)

Or is there a way to access the hardware before the BIOS boots up in which you can code? Or does it require a seperate unit or piece of hardware?

Thanks in advance

Edited by eskimo456: n/a

-1

I don't get how you do this without any software initially? Is this responsibility in the BIOS? If so who writes the BIOS and how?


i think so that BIOS is used initially.

Votes + Comments
Stop sig-spamming.
0

I don't get how you do this without any software initially? Is this responsibility in the BIOS? If so who writes the BIOS and how?


i think so that BIOS is used initially.

Please stop sig-spamming.

It has to do with logic gates built from transistor-resister combinations that build-up an ALU.
The BIOS will load the first initial code from a designated device's MBS.
The loaded code will point into the OS and initialize everything.
Eventually through user input, the OS may point to code that you've developed.
Skipping over all the loading of headers and crap, it points into the segment with your raw code that is passed to the CPU.
If the opcode at the current position in the code being read by the CU is less than 0x06, then it's an ADD operation(on an x86); based on that the ALU will ADD the correct registers or memory values together.

I hope I explained that right; it's late and I'm tired.

Edited by MosaicFuneral: n/a

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.