What did the 8086 (and 8088) do upon encountering an illegal instruction?Use of undocumented opcodesHow did...

If absolute velocity does not exist, how can we say a rocket accelerates in empty space?

My mom's return ticket is 3 days after I-94 expires

ASCII Meme Arrow Generator

What's the difference between DHCP and NAT? Are they mutually exclusive?

Part of my house is inexplicably gone

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

Professor Roman loves to teach unorthodox Chemistry

What plausible reason could I give for my FTL drive only working in space

Does a single fopen introduce TOCTOU vulnerability?

As easy as Three, Two, One... How fast can you go from Five to Four?

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

How to generate list of *all* available commands and functions?

Forgot passport for Alaska cruise (Anchorage to Vancouver)

How does AFV select the winning videos?

Grandpa has another non math question

Why did the World Bank set the global poverty line at $1.90?

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

Placement of positioning lights on A320 winglets

How to make a composition of functions prettier?

Is it advisable to add a location heads-up when a scene changes in a novel?

What does "lit." mean in boiling point or melting point specification?

How to Handle Many Times Series Simultaneously?

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

How (un)safe is it to ride barefoot?



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 8 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 16 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

            Taj Mahal Inhaltsverzeichnis Aufbau | Geschichte | 350-Jahr-Feier | Heutige Bedeutung | Siehe auch |...

            Baia Sprie Cuprins Etimologie | Istorie | Demografie | Politică și administrație | Arii naturale...

            Nicolae Petrescu-Găină Cuprins Biografie | Opera | In memoriam | Varia | Controverse, incertitudini...