What did the 8086 (and 8088) do upon encountering an illegal instruction?Use of undocumented opcodesHow did the Z80 instruction set differ from the 8080?What conventions and language extensions did people use to program the 8086 and 80286?Why did the PDP-11 include a JMP instruction?What was the IBM PC cost saving for using the 8088 vs 8086?Did the Intel 8086/8088 not guarantee the value of SS:SP immediately after RESET?Uses for the halt instruction?8086 pinout and address space limitHow to keep the instruction prefetcher filled upWhat instructions for the 8086 and subsequent x86 CPUs are not available in Long Mode?How did the 8086 interface with the 8087 FPU coprocessor?

Who is "He that flies" in Lord of the Rings?

Mathematica 12 has gotten worse at solving simple equations?

Do Veracrypt encrypted volumes have any kind of brute force protection?

What class is best to play when a level behind the rest of the party?

In American Politics, why is the Justice Department under the President?

If the pressure inside and outside a balloon balance, then why does air leave when it pops?

Playing a trill with grace note ending

Suppose leased car is totalled: what are financial implications?

What's the best way to quit a job mostly because of money?

How to represent jealousy in a cute way?

Am I allowed to determine tenets of my contract as a warlock?

Problem with pronounciation

Placement of positioning lights on A320 winglets

Part of my house is inexplicably gone

Why does there seem to be an extreme lack of public trashcans in Taiwan?

In Pandemic, why take the extra step of eradicating a disease after you've cured it?

Entered UK using my now-lost UK passport; can I go to Spain using my US passport?

Forgot passport for Alaska cruise (Anchorage to Vancouver)

How can I find out about the game world without meta-influencing it?

Why do I seem to lose data using this bash pipe construction?

Why do the TIE Fighter pilot helmets have similar ridges as the rebels?

Selecting by attribute using Python and a list

What is the proper event in Extended Events to track stored procedure executions?

How can you estimate a spike story?



What did the 8086 (and 8088) do upon encountering an illegal instruction?


Use of undocumented opcodesHow did the Z80 instruction set differ from the 8080?What conventions and language extensions did people use to program the 8086 and 80286?Why did the PDP-11 include a JMP instruction?What was the IBM PC cost saving for using the 8088 vs 8086?Did the Intel 8086/8088 not guarantee the value of SS:SP immediately after RESET?Uses for the halt instruction?8086 pinout and address space limitHow to keep the instruction prefetcher filled upWhat instructions for the 8086 and subsequent x86 CPUs are not available in Long Mode?How did the 8086 interface with the 8087 FPU coprocessor?













7















I was reading Tanenbaum's "Operating Systems, Design and Implementation" 3rd edition (The MINIX Book), where I encountered the following quote that surprised me:




For instance, the 8086 and 8088 processors do not support detection of illegal instruction operation codes, but this capability is available on the 286 and above, which trap on an attempt to execute an illegal opcode.




What did the 8086 and 8088 do when it an encountered an illegal instruction?










share|improve this question







New contributor



Joe D is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.














  • 1





    Possible duplicate of Use of undocumented opcodes

    – Stephen Kitt
    4 hours ago






  • 1





    The suggested duplicate isn’t an exact duplicate of the question, but some of the answers to it also answer this question.

    – Stephen Kitt
    4 hours ago















7















I was reading Tanenbaum's "Operating Systems, Design and Implementation" 3rd edition (The MINIX Book), where I encountered the following quote that surprised me:




For instance, the 8086 and 8088 processors do not support detection of illegal instruction operation codes, but this capability is available on the 286 and above, which trap on an attempt to execute an illegal opcode.




What did the 8086 and 8088 do when it an encountered an illegal instruction?










share|improve this question







New contributor



Joe D is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.














  • 1





    Possible duplicate of Use of undocumented opcodes

    – Stephen Kitt
    4 hours ago






  • 1





    The suggested duplicate isn’t an exact duplicate of the question, but some of the answers to it also answer this question.

    – Stephen Kitt
    4 hours ago













7












7








7








I was reading Tanenbaum's "Operating Systems, Design and Implementation" 3rd edition (The MINIX Book), where I encountered the following quote that surprised me:




For instance, the 8086 and 8088 processors do not support detection of illegal instruction operation codes, but this capability is available on the 286 and above, which trap on an attempt to execute an illegal opcode.




What did the 8086 and 8088 do when it an encountered an illegal instruction?










share|improve this question







New contributor



Joe D is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











I was reading Tanenbaum's "Operating Systems, Design and Implementation" 3rd edition (The MINIX Book), where I encountered the following quote that surprised me:




For instance, the 8086 and 8088 processors do not support detection of illegal instruction operation codes, but this capability is available on the 286 and above, which trap on an attempt to execute an illegal opcode.




What did the 8086 and 8088 do when it an encountered an illegal instruction?







instruction-set 8086 microprocessor 8088






share|improve this question







New contributor



Joe D is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.










share|improve this question







New contributor



Joe D is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








share|improve this question




share|improve this question






New contributor



Joe D is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








asked 9 hours ago









Joe DJoe D

1362




1362




New contributor



Joe D is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




New contributor




Joe D is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









  • 1





    Possible duplicate of Use of undocumented opcodes

    – Stephen Kitt
    4 hours ago






  • 1





    The suggested duplicate isn’t an exact duplicate of the question, but some of the answers to it also answer this question.

    – Stephen Kitt
    4 hours ago












  • 1





    Possible duplicate of Use of undocumented opcodes

    – Stephen Kitt
    4 hours ago






  • 1





    The suggested duplicate isn’t an exact duplicate of the question, but some of the answers to it also answer this question.

    – Stephen Kitt
    4 hours ago







1




1





Possible duplicate of Use of undocumented opcodes

– Stephen Kitt
4 hours ago





Possible duplicate of Use of undocumented opcodes

– Stephen Kitt
4 hours ago




1




1





The suggested duplicate isn’t an exact duplicate of the question, but some of the answers to it also answer this question.

– Stephen Kitt
4 hours ago





The suggested duplicate isn’t an exact duplicate of the question, but some of the answers to it also answer this question.

– Stephen Kitt
4 hours ago










2 Answers
2






active

oldest

votes


















8














Illegal opcodes were just instructions that hadn't been fully defined by the chip designers – a little like Undefined Behaviour in C, but much more predictable. Many people called these "undocumented instructions", because they functioned just like ordinary instructions, on the particular versions of the particular chips on which they are found. There was no special handling to prevent these instructions from executing.



Most of them were just NOPs (either because they weren't wired up to anything or because they did stuff like writing a register to itself) or duplicates of other instructions (because the instruction decoder ignored some bits when it didn't need to pay attention to them), but some of them were more interesting.



For instance, SALC, which does:



if (carry flag set)
AL = 0xFF;
else
AL = 0x00;


This can be used as a translation layer between C code and certain assembly returning conventions. It is equivalent to SBB AL, AL, except that it does not clobber flags.



For more information, see:




  • Stephen Kitt's answer to Use of undocumented opcodes.


  • supercat's answer to Use of undocumented opcodes, which has a good explanation of where they come from.

  • A related question on Stack Overflow





share|improve this answer
































    6














    It might be better to think about it this way:



    On the 286 and above, a new thing was defined called an "illegal instruction", and this new thing came with a new behavior -- a trap that was generated when one was encountered. Before the 286, there was no such thing as an illegal instruction, just undocumented ones.



    Your question then becomes, "what did the 8086 and 8088 do when encountering undocumented instructions" and the answer is simply that the behavior was undocumented. Some of them appeared to do nothing (i.e. they produced the same apparent result as a NOP instruction), while others did odd things, or simply the same thing as another opcode.



    Here's a WayBack link that may shed more light on the situation:
    http://web.archive.org/web/20190321200321/http://www.os2museum.com/wp/undocumented-8086-opcodes-part-i/






    share|improve this answer























    • This gets confusing because the 186 was introduced just after the 286, but it also generates an “illegal instruction” exception, so it’s technically “186 and above”.

      – Stephen Kitt
      4 hours ago











    Your Answer








    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "648"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    noCode: true, onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );






    Joe D is a new contributor. Be nice, and check out our Code of Conduct.









    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f11327%2fwhat-did-the-8086-and-8088-do-upon-encountering-an-illegal-instruction%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    8














    Illegal opcodes were just instructions that hadn't been fully defined by the chip designers – a little like Undefined Behaviour in C, but much more predictable. Many people called these "undocumented instructions", because they functioned just like ordinary instructions, on the particular versions of the particular chips on which they are found. There was no special handling to prevent these instructions from executing.



    Most of them were just NOPs (either because they weren't wired up to anything or because they did stuff like writing a register to itself) or duplicates of other instructions (because the instruction decoder ignored some bits when it didn't need to pay attention to them), but some of them were more interesting.



    For instance, SALC, which does:



    if (carry flag set)
    AL = 0xFF;
    else
    AL = 0x00;


    This can be used as a translation layer between C code and certain assembly returning conventions. It is equivalent to SBB AL, AL, except that it does not clobber flags.



    For more information, see:




    • Stephen Kitt's answer to Use of undocumented opcodes.


    • supercat's answer to Use of undocumented opcodes, which has a good explanation of where they come from.

    • A related question on Stack Overflow





    share|improve this answer





























      8














      Illegal opcodes were just instructions that hadn't been fully defined by the chip designers – a little like Undefined Behaviour in C, but much more predictable. Many people called these "undocumented instructions", because they functioned just like ordinary instructions, on the particular versions of the particular chips on which they are found. There was no special handling to prevent these instructions from executing.



      Most of them were just NOPs (either because they weren't wired up to anything or because they did stuff like writing a register to itself) or duplicates of other instructions (because the instruction decoder ignored some bits when it didn't need to pay attention to them), but some of them were more interesting.



      For instance, SALC, which does:



      if (carry flag set)
      AL = 0xFF;
      else
      AL = 0x00;


      This can be used as a translation layer between C code and certain assembly returning conventions. It is equivalent to SBB AL, AL, except that it does not clobber flags.



      For more information, see:




      • Stephen Kitt's answer to Use of undocumented opcodes.


      • supercat's answer to Use of undocumented opcodes, which has a good explanation of where they come from.

      • A related question on Stack Overflow





      share|improve this answer



























        8












        8








        8







        Illegal opcodes were just instructions that hadn't been fully defined by the chip designers – a little like Undefined Behaviour in C, but much more predictable. Many people called these "undocumented instructions", because they functioned just like ordinary instructions, on the particular versions of the particular chips on which they are found. There was no special handling to prevent these instructions from executing.



        Most of them were just NOPs (either because they weren't wired up to anything or because they did stuff like writing a register to itself) or duplicates of other instructions (because the instruction decoder ignored some bits when it didn't need to pay attention to them), but some of them were more interesting.



        For instance, SALC, which does:



        if (carry flag set)
        AL = 0xFF;
        else
        AL = 0x00;


        This can be used as a translation layer between C code and certain assembly returning conventions. It is equivalent to SBB AL, AL, except that it does not clobber flags.



        For more information, see:




        • Stephen Kitt's answer to Use of undocumented opcodes.


        • supercat's answer to Use of undocumented opcodes, which has a good explanation of where they come from.

        • A related question on Stack Overflow





        share|improve this answer















        Illegal opcodes were just instructions that hadn't been fully defined by the chip designers – a little like Undefined Behaviour in C, but much more predictable. Many people called these "undocumented instructions", because they functioned just like ordinary instructions, on the particular versions of the particular chips on which they are found. There was no special handling to prevent these instructions from executing.



        Most of them were just NOPs (either because they weren't wired up to anything or because they did stuff like writing a register to itself) or duplicates of other instructions (because the instruction decoder ignored some bits when it didn't need to pay attention to them), but some of them were more interesting.



        For instance, SALC, which does:



        if (carry flag set)
        AL = 0xFF;
        else
        AL = 0x00;


        This can be used as a translation layer between C code and certain assembly returning conventions. It is equivalent to SBB AL, AL, except that it does not clobber flags.



        For more information, see:




        • Stephen Kitt's answer to Use of undocumented opcodes.


        • supercat's answer to Use of undocumented opcodes, which has a good explanation of where they come from.

        • A related question on Stack Overflow






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited 26 mins ago









        Cody Gray

        1,149521




        1,149521










        answered 8 hours ago









        wizzwizz4wizzwizz4

        8,915642110




        8,915642110





















            6














            It might be better to think about it this way:



            On the 286 and above, a new thing was defined called an "illegal instruction", and this new thing came with a new behavior -- a trap that was generated when one was encountered. Before the 286, there was no such thing as an illegal instruction, just undocumented ones.



            Your question then becomes, "what did the 8086 and 8088 do when encountering undocumented instructions" and the answer is simply that the behavior was undocumented. Some of them appeared to do nothing (i.e. they produced the same apparent result as a NOP instruction), while others did odd things, or simply the same thing as another opcode.



            Here's a WayBack link that may shed more light on the situation:
            http://web.archive.org/web/20190321200321/http://www.os2museum.com/wp/undocumented-8086-opcodes-part-i/






            share|improve this answer























            • This gets confusing because the 186 was introduced just after the 286, but it also generates an “illegal instruction” exception, so it’s technically “186 and above”.

              – Stephen Kitt
              4 hours ago















            6














            It might be better to think about it this way:



            On the 286 and above, a new thing was defined called an "illegal instruction", and this new thing came with a new behavior -- a trap that was generated when one was encountered. Before the 286, there was no such thing as an illegal instruction, just undocumented ones.



            Your question then becomes, "what did the 8086 and 8088 do when encountering undocumented instructions" and the answer is simply that the behavior was undocumented. Some of them appeared to do nothing (i.e. they produced the same apparent result as a NOP instruction), while others did odd things, or simply the same thing as another opcode.



            Here's a WayBack link that may shed more light on the situation:
            http://web.archive.org/web/20190321200321/http://www.os2museum.com/wp/undocumented-8086-opcodes-part-i/






            share|improve this answer























            • This gets confusing because the 186 was introduced just after the 286, but it also generates an “illegal instruction” exception, so it’s technically “186 and above”.

              – Stephen Kitt
              4 hours ago













            6












            6








            6







            It might be better to think about it this way:



            On the 286 and above, a new thing was defined called an "illegal instruction", and this new thing came with a new behavior -- a trap that was generated when one was encountered. Before the 286, there was no such thing as an illegal instruction, just undocumented ones.



            Your question then becomes, "what did the 8086 and 8088 do when encountering undocumented instructions" and the answer is simply that the behavior was undocumented. Some of them appeared to do nothing (i.e. they produced the same apparent result as a NOP instruction), while others did odd things, or simply the same thing as another opcode.



            Here's a WayBack link that may shed more light on the situation:
            http://web.archive.org/web/20190321200321/http://www.os2museum.com/wp/undocumented-8086-opcodes-part-i/






            share|improve this answer













            It might be better to think about it this way:



            On the 286 and above, a new thing was defined called an "illegal instruction", and this new thing came with a new behavior -- a trap that was generated when one was encountered. Before the 286, there was no such thing as an illegal instruction, just undocumented ones.



            Your question then becomes, "what did the 8086 and 8088 do when encountering undocumented instructions" and the answer is simply that the behavior was undocumented. Some of them appeared to do nothing (i.e. they produced the same apparent result as a NOP instruction), while others did odd things, or simply the same thing as another opcode.



            Here's a WayBack link that may shed more light on the situation:
            http://web.archive.org/web/20190321200321/http://www.os2museum.com/wp/undocumented-8086-opcodes-part-i/







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 8 hours ago









            Ken GoberKen Gober

            8,37112542




            8,37112542












            • This gets confusing because the 186 was introduced just after the 286, but it also generates an “illegal instruction” exception, so it’s technically “186 and above”.

              – Stephen Kitt
              4 hours ago

















            • This gets confusing because the 186 was introduced just after the 286, but it also generates an “illegal instruction” exception, so it’s technically “186 and above”.

              – Stephen Kitt
              4 hours ago
















            This gets confusing because the 186 was introduced just after the 286, but it also generates an “illegal instruction” exception, so it’s technically “186 and above”.

            – Stephen Kitt
            4 hours ago





            This gets confusing because the 186 was introduced just after the 286, but it also generates an “illegal instruction” exception, so it’s technically “186 and above”.

            – Stephen Kitt
            4 hours ago










            Joe D is a new contributor. Be nice, and check out our Code of Conduct.









            draft saved

            draft discarded


















            Joe D is a new contributor. Be nice, and check out our Code of Conduct.












            Joe D is a new contributor. Be nice, and check out our Code of Conduct.











            Joe D is a new contributor. Be nice, and check out our Code of Conduct.














            Thanks for contributing an answer to Retrocomputing Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f11327%2fwhat-did-the-8086-and-8088-do-upon-encountering-an-illegal-instruction%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

            Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

            Ласкавець круглолистий Зміст Опис | Поширення | Галерея | Примітки | Посилання | Навігаційне меню58171138361-22960890446Bupleurum rotundifoliumEuro+Med PlantbasePlants of the World Online — Kew ScienceGermplasm Resources Information Network (GRIN)Ласкавецькн. VI : Літери Ком — Левиправивши або дописавши її