no-OS | Software drivers in C for systems
kandi X-RAY | no-OS Summary
kandi X-RAY | no-OS Summary
Software drivers in C for systems without an operating system
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of no-OS
no-OS Key Features
no-OS Examples and Code Snippets
Community Discussions
Trending Discussions on no-OS
QUESTION
Recently, I decided to learn a new programming language and I know that C++(which is the language I am going to learn) is really good and fast.(fast execution)
And now I have a question about C++(and maybe C)
Is it possible to make a program that runs on every device?
like bypassing the OS and run commands/0s and 1s directly on the CPU?
or
run on a computer that does not have an OS installed, like creating your own OS?
And if it's possible then what is the difference between the .exes(windows executables) and the programs with No-OS support? (On compilation and on the file as file)
...ANSWER
Answered 2021-Mar-28 at 06:04C is older than C++ but you are right that it is similar to C++ because it is compiled to binary code. When you write a C/C++ program you compile it to binary using a compiler.
Today, most desktop computers run on a variant of x86 architecture processor which started with Intel's 8086. The x86 processors are well documented. I never implemented an assembler so I can't tell exactly how to go from high level code (C/C++) to binary but I can link to the documentation which tells you how to do that. Here you have the download link for the Intel software developer manual: https://software.intel.com/content/www/us/en/develop/download/intel-64-and-ia-32-architectures-sdm-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4.html. Appendix B of volume 2 of this download link has the instruction encoding explanations. Here's a picture of the format of an instruction:
On x86 (and all other architectures like ARM), the instructions have a certain conventional encoding that the compiler knows and that it will use to compile your high level code to binary code. Today, when you write an OS, you use a screen and a compiler and other tools readily available to compile to binary code. With gcc/g++ on Linux you have the freestanding and static flags which allow to include all the code in your final executable and to make sure the code is self-standing.
If you write code on Linux and want to develop an OS, you need to know C/C++ quite well because you cannot use anything which relies on the standard libraries like printf() or cout. This means that you are left with the basic C/C++ like pointers (which are very important) and function calls and other stuff. You need to know quite well how the language works to control memory properly and to be able to not use stuff of the language which depends on the presence of an OS.
The .exe file is a conventional format which contains binary code. The Linux equivalent of a .exe file is a .elf file. There's nothing wrong about compiling an OS to a .exe file (or a .elf file) and parsing that file from a bootloader to jump to its entry point. The difference is that you need to tell your compiler and you need to write a program which doesn't rely on the presence of an OS to work (because you are the one who writes the OS). You are thus left with the basic C/C++ like pointers and structs. With C++ you can use classes as well because they are compiled to function calls.
For freestanding C/C++ code to work, you need to set up a hardware stack with the RSP register of the CPU. This will allow your code to call functions (other than main()). Freestanding C/C++ code relies on the presence of a stack but nothing else to work properly because all high level lines of code that you write will be compiled to CPU instructions which don't rely on anything else. If you wanted, you could even forget the stack and do everything in the main function and forget about functions. You would thus be left with pointers and structs. I think a minimum is to have functions so that you can organize your code properly. Linux is really just a freestanding, statically linked C program compiled to a .elf file and compressed with gzip. Linux follows the multiboot specification which tells how to boot it. It means that, to write Linux, the developers used only pointers, structs and functions. Pointers are compiled to memory fetch code which is one instruction in itself. Structs are compiled to data. Functions are compiled to relative jumps (short jumps), pop and push instructions (using the stack for the arguments). This is pretty much it.
You can definitely write your own OS because otherwise how would Microsoft develop Windows. To write an OS, you need to use tools at your disposition and compile freestanding and static code. Then you need to write a custom bootloader like a legacy bootloader in assembly or a UEFI bootloader in C compiled with specialized tools like EDK2. EDK2 is a compiler for UEFI bootloaders. Once you have an EFI app, you can launch that app and parse a statically linked freestanding .elf file (or .exe file) from the app. Then you can jump to the entry point of that .elf file. You can use the UEFI environment to load the .elf file from the hard disk.
Remember when you last installed an OS. You basically use a tool like Media Creation Tool from microsoft to write a small OS on a USB stick. Then you choose that USB stick to boot from the BIOS and you install the OS to an hard disk. Developing and OS is the same. You use an existing compiler and existing OS to write custom OS code. Then you write that code to a USB stick (or an hard disk) and then you test the code. A better option is emulation. You do that using specialized virtualization software like QEMU or Virtual Box to test your custom OS.
QUESTION
I'm developing a Xamarin navigation app for a local walking route, the app seems to work fine on any physical device I try it on, also distribution using the Testflight system seems fine. The android version is available on the app store and works.
However when I submit the IOS app for review, the app always seems to crash when the Apple employee presses the "Get started" button in my app.
Pressing get started switches the app to the gps navigation page and starts the navigation, which is why I'm asuming something goes wrong here: MapPage.xaml.cs
I have tried different linker settings, because I think that might be the issue, sadly I can not try to disable the linker entirely, because it makes the size of the executable exceed the app store limit.
The project is public: https://github.com/jelknab/FamilieWandelPad
Attached is a symbolicated crash log:
...ANSWER
Answered 2020-Sep-30 at 11:26I found the issue by adding appcenter issue tracking. The problem still persist on apple review devices, but has now passed review by try-catching the issue and not doing anything with it. The app works fine on any other devices.
QUESTION
I'm not able to enable the Raspberry Pi's VNC capture mode from the command line. ExperimentalRaspiCapture mode allows you to remotely view videos running.
If not enabled, you cannot watch videos. As my application has disabled the raspbian graphical mode, I only have operations from the command line and I do not have access to the internet on them, only local network.
I did tests on an alternative raspberry and in graphical mode I enabled this option according to the tutorial on page vncserver experimental direct capture mode missing and it worked for me, but I have several raspberries and enabling it by command line is my best option at the moment, but I can't enable it.
I already tried the tutorial on the page: How do I get VNC access to Kano OS working correctly? But it did not work.
Any idea? Has anyone managed to do this? Thanks.
Use vnc version: VNC (R) Server 6.2.1 (r32538) ARMv6
I use the raspberry: *Linux raspberrypi 4.14.34-v7 *
...ANSWER
Answered 2020-Feb-24 at 20:17I found the problem. I wasn't doing it right. I have to change the file in the root user and then restart the serviced. ;)
Edit the config file '/root/.vnc/config.d/vncserver-x11' adding the following:
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install no-OS
NO-OS Build Guide
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page