473,396 Members | 1,990 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

can we program a hardware with c++ ?

RabahMabhoul
hello!

I was wondering weither I can write a System like ext4 HTFS FAT with c++ programing language, and if there's a link to a book that explain all the fundimental of programming language and how they involved ! please answer back !
May 24 '15 #1

✓ answered by kiseitai2

I have taken an electronics course before that used C. The reason C is preferred when you are playing with the hardware is mostly because of overhead issues. The problem is not really most of the points computerfox mentioned. The issue is mostly that you may or may not be working with a circuit that has low RAM and storage capabilities (as low as 1KB of RAM and a couple of megs of storage (at best)). C++ has many nice features that on paper makes it a more attractive language than C; however, these C++ features will make your binary fatter and will increase the RAM requirement for your program. C, on the other hand, forces you to rewrite some of these features from scratch and/ or rethink your strategy such that you make leaner and faster code. Now, you may think 1 KB of RAM is nothing, but it is actually a considerable amount when using C and when you write smart and efficient code. Thus, the hierarchy is to write the foundation of your system (low level layer) in C or assembly, write the intermediate components in C++ or other similarly strong language, and write the uppermost layers with languages as simple as scripting languages like Python. My rule of thumb is, if I am constraint by the circuit and/or the feature is critical to my solution to the problem, I should probably use C. I hope my explanation helps.

7 1725
computerfox
276 100+
Rabah,

What's with all the yelling in the threads?
As I explained in the original thread, C++ isn't used in too many places other than education as C is still the preferred. C++ is very high-level so systems are especially not written in C++. Even Windows is written in C until it can bring in the .Net framework. C has the best of both worlds, high level and lower level like assembly. C++ was C re-written.

A simple Google search could have given you more information:
https://www.google.com/?gws_rd=ssl#q...ramming+with+C

There would also be memory allocation issues, memory leak issues, functions in C++ that aren't recognized, C++ is not meant for low level programming.

Here's more information on low level development:
http://wiki.osdev.org/Main_Page

Hope that helps!
May 24 '15 #2
I have taken an electronics course before that used C. The reason C is preferred when you are playing with the hardware is mostly because of overhead issues. The problem is not really most of the points computerfox mentioned. The issue is mostly that you may or may not be working with a circuit that has low RAM and storage capabilities (as low as 1KB of RAM and a couple of megs of storage (at best)). C++ has many nice features that on paper makes it a more attractive language than C; however, these C++ features will make your binary fatter and will increase the RAM requirement for your program. C, on the other hand, forces you to rewrite some of these features from scratch and/ or rethink your strategy such that you make leaner and faster code. Now, you may think 1 KB of RAM is nothing, but it is actually a considerable amount when using C and when you write smart and efficient code. Thus, the hierarchy is to write the foundation of your system (low level layer) in C or assembly, write the intermediate components in C++ or other similarly strong language, and write the uppermost layers with languages as simple as scripting languages like Python. My rule of thumb is, if I am constraint by the circuit and/or the feature is critical to my solution to the problem, I should probably use C. I hope my explanation helps.
May 24 '15 #3
weaknessforcats
9,208 Expert Mod 8TB
All true.

C++ is to avoid coding mistakes in applications. Plus there are compiler generated calls that you need to be aware of. Hence the bloat.

There are no applications close to the metal so I wouldn't be using C++ there.
May 26 '15 #4
Thank you for those special answers !
if for example I want to develop softwares for windows witch language should I chose !
May 31 '15 #5
and the question that delve in my head this time what is the
difference between assembly and c ? if they are both low level programming languages !

1- Is assembly included in c ? or c is an advanced version of assembly ?

2-is c programming languages do every thing that assembly language do -?
May 31 '15 #6
weaknessforcats
9,208 Expert Mod 8TB
What kind of software for Windows?

If it's an application that is to run on the web you might be using C#. If it is an internal OS extension feature yu will probably need to use Microsoft's version of C - plus all their naming conventions (don't get me started).

As to assembly language and C it's this way:

The C compiler generates assembly code. This assembly code is converted machine language using an assembler (also a compiler). When you build a C program these two compilers are used to get your object file.
May 31 '15 #7
donbock
2,426 Expert 2GB
Another difference between C and assembly language is that it is possible (if you're careful) to write portable programs in C that can run without alteration on any computer that has a C compiler; while each processor has its own custom assembly language. Assembly language programs are not portable.

On the other hand, portability is not much of an issue when writing a device driver -- which, by definition, is specific to a particular hardware platform. Nevertheless, it is almost always easier to move a no portable C program from one platform to another than it is to rewrite an assembly language program for a different processor.

Engineers sometimes speak of "embedded systems" -- a product that contains a processor (a coffee pot, a router, a car, etc). C can be used for to program embedded systems, but be careful - embedded systems are typically "freestanding implementations", a phrase used in the C Standard for an implementation that is permitted to provide only a small subset of the Standard C Library.
Jun 1 '15 #8

Sign in to post your reply or Sign up for a free account.

Similar topics

2
by: Mark | last post by:
We have a particular software project where a minority of the function calls are taking up a majority of the cpu time. (they do a lot of geometric, trig and other functions related to vectors...
29
by: tele-commuter | last post by:
Hi folks, I want to understand how exactly is an image(compiled c code and loaded into memory) stored in memory. What exactly is a linker script? I work with a lot of c code on a daily...
14
by: noridotjabi | last post by:
Two questions. 1)Is there any way that I can read from an executable and then execute what I have read. EXAMPLE: text text this is more text
110
by: alf | last post by:
Hi, is it possible that due to OS crash or mysql itself crash or some e.g. SCSI failure to lose all the data stored in the table (let's say million of 1KB rows). In other words what is the worst...
2
by: Sheikko | last post by:
Hi, I am deveopping an application on the pocket pc and I need to program hardware buttons to toggle between 2 application. Exactly from the code of the first application I open a second...
5
by: mohamed azaz | last post by:
hi I want to know can c++ deal with hardware?? like fax modem or Lan or Audio device
1
by: sewid | last post by:
Hi there! I've got a problem with no solution, I hope you might help me. I am writing a small tool with many buttons. Every button starts a thread and this thread starts something else, in the...
1
by: Wizfrog | last post by:
Hello, is there ways to access hardware from C#? In particluar, I am looking to change screen luminosity (or brightness/contrast values) from within a C# program. Hardware drivers / control...
4
by: Angus | last post by:
Hello My program works with different types of telephone system. Their interfaces are all different. But, of course, I don't want to have to write a different program for each system. There...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.