• Skip to main content
  • Skip to primary sidebar

Technipages

Tutorials and fixes for smartphone, gadget, and computer problems

  • Topics
    • Android
    • Gaming
    • Hardware
    • Internet
    • iOS
    • MacOS
    • Office
    • Software
    • Windows
    • Definitions
  • Product Reviews
  • Downloads
  • About Technipages
What Is An Instruction Set?

What Is An Instruction Set?

Posted on July 25, 2022 by Mel Hawthorne Leave a Comment

Any CPU is designed from the ground up to support a particular instruction set. An instruction set is a set of hard-coded operations that the CPU can perform. These operations can be, for example, adding two numbers together, jumping to a different part of the program, or comparing two values. Each operation a computer can perform is uniquely represented by an opcode.

Opcodes

When executing a program, the CPU uses a program counter to track which instruction needs to be performed next. When an instruction is fetched, the program counter is incremented by the length of the instruction so that it points to the start of the next instruction. Each instruction consists of an opcode. Depending on the instruction, it may or may not include operands. Operands may be a constant value or a pointer to the location of a value in the CPU register or in system RAM.

Once the complete instruction has been fetched, it needs to be decoded. This is the process where the CPU separates the opcode and any operands. The decoded opcode is used to enable or disable specific electrical pathways in the CPU that will result in the correct operation.

Once the instruction has been decoded, it will be executed. The exact behavior of the CPU will depend on the operation. An addition operation will sum two values together. A jump operation will calculate where in the program to jump to. A compare operation will compare two values. A NOP operation will sit idle, as NOP stands for No Operation.

Most instructions will then output the result of the operation. This output can go to the processor registers and, if necessary, to system RAM. Each of these operations takes a single clock cycle to complete.

Illegal Opcodes

Each CPU architecture has its specific list of opcodes published by the manufacturer. The values of these opcodes aren’t necessarily the same cross-platform, which is why software needs to be compiled for different architectures. In some cases, the manufacturer also includes undocumented opcodes. These are referred to as “illegal opcodes.” Illegal opcodes, while undocumented, will perform the same function every time they’re called. As undocumented and non-standard features, though, updates to the CPU architecture can simply remove them.

Some early computer games on the Apple II relied on specific illegal opcodes. They then suffered performance and stability issues on the later Apple IIc CPU revision as the IIc removed the illegal opcodes the games required. Illegal opcodes were also used in copyright protection circles as a security method through obscurity in their fight against pirates cracking their content. Some illegal opcodes are simply meant as debugging tools and error handlers.

The x86 instruction set contains a large number of undocumented illegal opcodes. Interestingly, some of these are shared between Intel and AMD CPUs, indicating that both companies are publicly aware of their purpose while undocumented.

Compilers and Assembly

Most programs are written in high-level languages. These are relatively easy to read, often using English words or shorthand to minimize learning curves. For a computer to execute these programs, they need to be compiled. A compiler is basically a translator. It takes the high-level code and converts it into computer code, the instructions that the CPU can understand.

It’s also possible, in some languages, to run uncompiled code through a previously compiled program that generates machine code on the fly. Assembly is a low-level programming language that uses shorthand to allow developers direct visibility and control over the operations performed. NOP is an example of assembly shorthand.

Conclusion

An instruction set is a list of official functions that a CPU architecture can run. It is a list of operations that can be performed. These operations are hard-coded into the CPU and called using their respective opcodes.

Software generally uses a compiler to translate from human-readable high-level code to the machine code that the CPU can read. Sometimes, a CPU architecture can have undocumented opcodes, called illegal opcodes. Illegal opcodes are technically part of the instruction set. However, they may not be reliably available in future platform iterations. Don’t forget to leave your thoughts in the comments below.

Filed Under: Computing

Reader Interactions

Did this help? Let us know!

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Primary Sidebar

Recent Posts

  • What Is an Internal Speaker?
  • Google Keep: How to Share Your Notes with Someone
  • Google Docs: How to Use Find and Replace
  • Google Docs: How to Use Page Breaks
  • How to Use Pageless Format in Google Docs
  • Google Sheets: How to Easily Merge Cells
  • What is Overvolting?
  • What Is Denial of Service?

Who’s Behind Technipages?

Baby and Daddy My name is Mitch Bartlett. I've been working in technology for over 20 years in a wide range of tech jobs from Tech Support to Software Testing. I started this site as a technical guide for myself and it has grown into what I hope is a useful reference for all.

© Copyright 2022 Technipages · All Rights Reserved · Privacy