element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Code Exchange
  • Technologies
  • More
Code Exchange
Forum OS Development
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Code Exchange to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 13 replies
  • Subscribers 48 subscribers
  • Views 1515 views
  • Users 0 members are here
  • Code Exchange
  • assembly
Related

OS Development

nick123
nick123 over 10 years ago

     I've been studying assembly language for a long long long time, and I want to try OS Development. I've heard of MikeOS it was entirely written in real mode assembly. I looked over the code of MikeOS and now I feel very discouraged. It is a lot of complicated code just for a simple os.

 

MikeOS - simple x86 assembly language operating system

  • Sign in to reply
  • Cancel

Top Replies

  • michaelkellett
    michaelkellett over 10 years ago +1
    Most OS are not written in assembler but in C or other high level language. To write even a small scheduler type OS in assembler is an odd thing to do since it will make it take longer and it won't be…
  • johnbeetem
    johnbeetem over 10 years ago in reply to nick123 +1
    Nick Gallagher wrote: Why is C portable and not assembly? An assembly language program only runs on one computer architecture, i.e., one instruction set. You can't run ARM assembly language on x86…
  • clem57
    clem57 over 10 years ago in reply to nick123 +1
    Yes if they produce a .COM module and assembly inline OK if you are careful.
Parents
  • michaelkellett
    0 michaelkellett over 10 years ago

    Most OS are not written in assembler but in C or other high level language.

    To write even a small scheduler type OS in assembler is an odd thing to do since it will make it take longer and it won't be portable.

    However you sometimes have to write small sections of the code in assembler because there may be things that C (or other high level language) just can't do - like, for example atomic compare and set or re-entrant interrupts on an arm.

    Sometimes you need to use assembler because even optimizing compilers just don't get it - so you might design a filter where the coefficients and processing steps are carefully arranged so that you end up with all division being by 2^8 or 2^16 but the compiler doesn't see it (much less common than it used to be) so you end up using assembler to get the ultimate performance. But you should always write the code in straightforward C first and only hand optimize in assembler if the compiled code isn't fast enough. (This is very unlikely to be the case with a boot loader.)

     

    If you are using tiny 8 or 4 bit processors then you may have no choice but to use assembler, but make sure you are going to use a lot of them else it will be cheaper to use an ARM Cortex M0 and write the code in C with much less time and effort.

     

    MK

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • clem57
    0 clem57 over 10 years ago in reply to michaelkellett

    Arduino comes to mind when you say too slow to process interrupts on a large scale per second.

    Clem

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • michaelkellett
    0 michaelkellett over 10 years ago in reply to clem57

    Well the Arduino is a bit of a mad thing - running a C/C++ hybrid on an 8 bit processor and competing in a 32bit world the amazing thing is that it holds its own so well. It has problems during interrupts since it has to stack 16 bit (or more) context over an 8 bit bus so needs extra cycles.

     

    I used to use AtmelAVRs quite a bit but I haven't designed one into a new project for several years (about 7, I think).

     

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • michaelkellett
    0 michaelkellett over 10 years ago in reply to clem57

    Well the Arduino is a bit of a mad thing - running a C/C++ hybrid on an 8 bit processor and competing in a 32bit world the amazing thing is that it holds its own so well. It has problems during interrupts since it has to stack 16 bit (or more) context over an 8 bit bus so needs extra cycles.

     

    I used to use AtmelAVRs quite a bit but I haven't designed one into a new project for several years (about 7, I think).

     

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube