Fact-checked by Grok 2 weeks ago

Zero flag

The zero flag, commonly abbreviated as ZF or Z, is a single-bit indicator in the flags register (also known as the status register or program status word) of many central processing unit (CPU) architectures that signals whether the result of the preceding arithmetic, logical, or comparison operation equals zero. It is typically set to 1 (asserted) when the operation yields a zero result and cleared to 0 (deasserted) otherwise, providing essential feedback for control flow decisions in low-level programming. This flag is a core component of processor design in architectures such as x86 and ARM, where it facilitates efficient equality testing without additional explicit checks. In practice, the zero flag is updated by instructions like , , bitwise operations, or dedicated comparison instructions (e.g., CMP in x86 or CMP in ), which compute differences or perform tests that implicitly evaluate to zero for equal operands. For instance, in x86 , a CMP instruction sets ZF=1 if the two operands are equal, allowing subsequent conditional s such as JZ (jump if zero) or JNE (jump if not equal) to branch based on the flag's state. Similarly, in , the enables conditional execution suffixes like (equal) or (not equal) on instructions, optimizing code by avoiding unnecessary branches and supporting predicated execution. This mechanism is crucial for implementing loops, equality validations, and error checks in and compiler-generated code, enhancing performance in resource-constrained environments. While ubiquitous in CISC and RISC designs like x86, , and , the zero flag is not universal across all processor architectures; for example, omits a dedicated and instead relies on direct comparisons or the hardwired zero register ($0) for zero-detection in branch instructions. Its presence underscores a key in CPU design between explicit flag-based control and register-centric simplicity, influencing instruction encoding efficiency and branch prediction.

Definition and Operation

Core Concept

The zero flag, commonly abbreviated as ZF, is a single-bit indicator within a processor's status or that signals whether the outcome of an , logical, or operation is exactly zero. It is set to 1 (true) when all bits of the result are 0, and cleared to 0 (false) otherwise. This nature allows the flag to represent a precise condition without storing the full result value. The primary purpose of the is to facilitate efficient decisions in execution, such as identifying equality between two values (e.g., via yielding ) or detecting end-of-loop conditions, thereby avoiding the need for extra explicit checks that would consume additional cycles. In designs, it integrates seamlessly with conditional instructions to optimize based on operation outcomes. In terms, the zero flag occupies a specific bit position in the , which differs by ; for example, it is bit 6 in the x86 EFLAGS or RFLAGS register. To illustrate, consider a like 5 - 5, resulting in 0, which sets the zero flag to 1; in contrast, 5 + 1 yields 6, clearing the flag to 0.

Setting and Clearing Mechanisms

The zero flag (ZF) is set to 1 when the entire result of an operation is exactly zero, following any necessary or masking to the target operand size, and regardless of whether the operands are of varying bit widths such as 8-bit, 16-bit, 32-bit, or 64-bit. This condition ensures that ZF accurately reflects the numerical outcome as zero across the full precision of the result. Conversely, ZF is cleared to 0 whenever the result is non-zero, encompassing positive values, negative values in representation, or scenarios involving overflows that produce a non-zero outcome. Overflows themselves do not directly influence ZF; instead, the flag's state depends solely on whether the final computed value equals zero. This mechanism applies to a range of operations, including arithmetic instructions such as , , , and ; logical operations like bitwise AND, OR, XOR, and NOT; shift operations; and comparison operations that evaluate without storing the result. In all cases, ZF updates based on the post-operation result to facilitate subsequent conditional logic. For multi-byte results, ZF is set only if all bytes of the result are zero, ensuring the flag captures the complete zero state across the operand's width. The behavior remains consistent for both unsigned and signed operations that yield zero, as ZF evaluates the bit pattern numerically without regard to interpretive signedness. The algorithmic logic for toggling ZF can be expressed in pseudocode as follows:
After performing operation OP on operands to produce result:
if (result == 0) {
    ZF = 1;
} else {
    ZF = 0;
}
This simple conditional check underpins ZF's utility in detecting equality, such as in comparisons for conditional branching.

Architectural Implementations

x86 and Compatible Processors

In the x86 architecture, the zero flag (ZF) resides at bit 6 of the 16-bit , the 32-bit EFLAGS register, and the 64-bit RFLAGS register, where it serves as a status indicator updated by various instructions to reflect computational outcomes. This positioning has been uniform across compatibility modes, with the upper bits of EFLAGS and RFLAGS reserved to maintain legacy support. The ZF evaluates the entire operand width without partial considerations, setting to 1 only if the full result—for instance, the 8-bit value in AL, 16-bit in AX, 32-bit in EAX, or 64-bit in RAX—is zero, ensuring that sub-register modifications do not independently trigger flag changes. Arithmetic operations such as ADD, SUB, and CMP set ZF based on the destination register or accumulator becoming zero, while comparison instructions like CMP specifically set it upon operand equality. Logical instructions including TEST, AND, OR, and XOR explicitly set ZF if their bitwise result across the operand width is zero, providing a mechanism for detecting null states without altering memory. In contrast, MUL and DIV affect ZF based on the accumulator or destination in legacy documentation, though modern implementations treat it as undefined to prioritize performance in multi-word results. Extensions like and AVX integrate ZF into vector processing, where instructions such as PTEST set it to 1 if the bitwise AND of two XMM or YMM registers yields all zeros, enabling checks for fully zeroed vector elements in certain modes. Scalar floating-point compares like COMISS and UCOMISS similarly set ZF upon equality, extending zero-detection to SIMD contexts while preserving compatibility with integer operations. This ZF behavior originated with the in 1978 and has remained consistent through evolutions by and , supporting seamless transitions across 16-, 32-, and 64-bit environments without architectural disruptions.

ARM and RISC Architectures

In architectures, the zero flag is integrated into the condition code registers to support efficient RISC operations. In the 32-bit AArch32 execution state, it forms part of the Current Program Status Register (CPSR), a 32-bit register where the Z bit at position 30 is set to 1 if the result of the last flag-setting instruction equals zero, and cleared to 0 otherwise. This design allows the zero flag to indicate equality or null results from arithmetic and logical operations. In the 64-bit state, the condition flags, including the zero flag, are consolidated into a dedicated 4-bit NZCV register for improved clarity and accessibility, with the Z bit maintaining the same semantic role based on 64-bit result widths. The zero flag is updated by specific data processing instructions, enhancing conditional control flow in RISC pipelines. Instructions such as ADD, SUB, and the dedicated CMP update the Z flag when suffixed with 'S' to indicate flag modification; for instance, CMP sets Z to 1 if the two operands are equal (resulting in zero difference). These updates enable widespread conditional execution, where nearly all instructions can be predicated on flag states—e.g., ADDEQ performs addition only if Z is 1, allowing equality-based branches without explicit jumps and reducing branch misprediction overhead. In vector extensions, this behavior extends to SIMD operations: NEON instructions use predicate registers for lane-wise control, while SVE (Scalable Vector Extension) instructions can set the Z flag via predicate tests, such as when all lanes in a vector are zero (inactive), supporting scalable parallelism across varying vector lengths. ARM's handling of the zero flag emphasizes power efficiency through optional updates, aligning with RISC principles of simplicity and minimalism. The 'S' suffix on instructions allows selective flag updates, avoiding computations when flags are not needed for subsequent conditionals, which conserves energy in battery-constrained and mobile systems by minimizing unnecessary register writes and stalls. In variants like mode, which compresses instructions for code density in resource-limited environments, the zero flag's behavior remains preserved within the CPSR, with conditionals managed via IT (If-Then) blocks in Thumb-2 to maintain compatibility and efficiency. This contrasts briefly with x86's more rigid always-updated flags, highlighting ARM's flexible model for low-power RISC designs.

Legacy and Other Processors

In legacy processors such as the , the zero flag (Z) resides in the 8-bit processor status register and is set to 1 if the result of an arithmetic, logical, load, or transfer operation equals zero, otherwise cleared to 0. This flag supports conditional branching instructions like BEQ (branch if equal, i.e., zero) and BNE (branch if not equal), enabling efficient decisions in resource-constrained 8-bit systems such as early home computers and game consoles. The 6502's implementation emphasizes simplicity, with the Z flag updated by arithmetic, logical, load, and transfer instructions based on the result or transferred value. The PDP-11 family, influential in early Unix development, incorporates the flag as bit 2 () in the 16-bit processor status word (PSW), set when the result of an operation is and used alongside negative (N), overflow (V), and carry (C) flags for condition testing. Instructions such as (test) explicitly set the by comparing the to without altering it, facilitating branches like BEQ and BNE that check for equality or inequality. This design influenced subsequent CISC architectures by providing a compact mechanism for signed and unsigned comparisons in multitasking environments. Similarly, the VAX architecture from features the zero flag (Z) as bit 2 in the processor status longword (), activated when an arithmetic or logical result is zero, integrated with N, V, and C for comprehensive condition code evaluation. VAX instructions like CMPL (compare longword) update the Z flag to support branches such as BEQ, enabling and applications to handle equality checks efficiently across 32-bit operations. The , a cornerstone of workstations and early personal computers, includes the zero flag (Z) in the 16-bit , set to 1 for zero results from ALU operations and cleared otherwise, often in conjunction with extend (X), negative (N), overflow (V), and carry (C) bits. For instance, the CMP (compare) instruction computes the difference without storing it but sets the Z flag if equal to zero, allowing branches like BEQ to optimize code in systems like the Macintosh and . This flag's behavior ensures consistent handling of byte, word, and longword sizes, promoting portability in mixed-mode environments. Among other processors, the RISC architecture eschews a dedicated zero flag in favor of register-based zero detection, with the hardwired $zero register (r0) always holding 0 to facilitate comparisons via instructions like BEQ (branch if equal to zero) or BNE. This design reduces hardware complexity by avoiding a , relying instead on immediate result testing in the , which enhances in embedded and applications. The instruction set architecture similarly lacks a dedicated zero flag or condition codes register, following a minimalist RISC design. It uses direct conditional branch instructions such as BEQ (branch if equal) and BNE (branch if not equal) that compare two registers, with the hardwired zero register x0 enabling efficient zero checks (e.g., BEQ rs, x0, label to branch if rs is zero). This approach, ratified in its base form in 2010 and extended through ongoing specifications as of 2025, promotes simplicity and extensibility in open-source implementations for embedded systems, AI accelerators, and general-purpose computing. SPARC processors implement the zero condition code (Z) within the integer condition codes (ICC) of the 32-bit processor state register (PSR), set to 1 if an ALU result is zero and used for conditional branches like BNE (branch on not equal, i.e., Z=0). Instructions such as ADDcc (add with condition codes) update the ICC, including Z, to support scalable parallelism in workstation and server environments, with the flag cleared for non-zero results to enable precise control flow. In PowerPC architectures, zero detection occurs via the equal (EQ) bit in the condition register (CR), a 32-bit structure divided into eight 4-bit fields (CR0–CR7), where integer operations typically update CR0's EQ to 1 if the result is zero. Branches like BEQ (branch if equal) test this bit, allowing flexible condition evaluation without a monolithic flags register, which aids in vector processing and superscalar execution in systems like IBM's RS/6000. The CR's design permits multiple outstanding conditions, improving over traditional single-flag approaches.

Programming Applications

Conditional Branching and Control Flow

The zero flag (ZF) plays a pivotal role in conditional branching by enabling processors to alter program execution flow based on whether the result of a prior operation equals zero. In x86 architectures, instructions such as JZ (Jump if Zero) and JNZ (Jump if Not Zero) directly test the ZF to decide whether to branch to a specified label. For instance, JZ branches if ZF is set (indicating a zero result), while JNZ branches if ZF is clear (non-zero result). Similarly, in architectures, the BEQ (Branch if Equal) instruction branches when the is set following a comparison, and BNE (Branch if Not Equal) branches when the is clear; these leverage the in the Application Program Status Register (APSR). In , while there is no explicit ZF, the BEQ and BNE instructions implicitly test for zero by comparing two registers and branching if their difference is zero or non-zero, respectively, achieving analogous without a dedicated . This mechanism allows efficient decision-making in code, where the flag's state reflects the outcome of arithmetic or logical operations without requiring redundant computations. ZF is instrumental in loop control, particularly for termination conditions where a counter or accumulator is decremented until it reaches zero. For example, a might repeatedly subtract 1 from a until the result sets ZF, triggering an exit ; this avoids explicit comparisons and minimizes overhead. In testing, a CMP (compare) sets ZF based on the difference between two values—such as , locations, or constants—followed by a JZ to if they match, enabling or pointer comparisons without temporary storage for results. An illustrative x86 snippet for testing is:
CMP AX, BX
JZ equal_label
Here, if AX equals BX, ZF is set, and execution jumps to equal_label. This approach is common in low-level optimizations for tasks like checks or scans. The use of ZF in branching offers significant benefits, as flag checks typically execute in a single cycle, contrasting with multi-instruction sequences for direct comparisons that could stall the . In modern CPUs, ZF-based branches integrate seamlessly with branch prediction and , reducing misprediction penalties and improving instruction throughput; for instance, pipelined designs can resolve ZF conditions early in the execution stage, minimizing latency in decisions. These efficiencies are particularly evident in high-frequency loops and conditional paths, where flag-dependent branching outperforms flagless alternatives by avoiding data dependencies and extra ALU operations.

Arithmetic and Logical Operations

In processor architectures, arithmetic operations such as and set the zero flag when the result of the computation is exactly zero, regardless of borrow or carry conditions. In x86, the ADD instruction computes the sum of two operands and sets the zero flag to 1 if that sum equals zero; similarly, the instruction sets the zero flag to 1 if the difference between operands is zero. In , the flag-setting variants ADDS and SUBS set the to 1 if the result equals zero. and instructions in x86 (MUL, IMUL, DIV, IDIV) do not update the zero flag based on their results; the ZF is undefined after these operations, requiring separate instructions for zero checks if needed. Logical operations influence the zero flag by evaluating the bitwise result of the computation. The AND instruction sets the zero flag to 1 if all bits in the result are cleared (i.e., the result is zero), commonly used in masking scenarios where testing against a clears specific bits. The XOR operation sets the zero flag to 1 when the operands are identical, as their bitwise exclusive-or yields zero; conversely, the OR instruction sets the flag if the bitwise union of operands results in zero. The instruction, which performs an AND without storing the result, isolates the zero flag to check if the AND outcome is zero, often for null or validation. Shift and rotate instructions set the zero flag based on whether the shifted or rotated result equals zero. For example, logical shifts like SHL (shift left) or SHR (shift right) set the flag to 1 if the operation shifts all bits out, leaving the result as zero; arithmetic shifts like (shift arithmetic right) follow the same rule, setting the flag if the sign-extended result is zero, which can occur after repeated shifts that eliminate non-zero bits. Comparison operations are designed to generate flags without altering operands, focusing on the zero flag for equality checks. The CMP instruction performs a subtraction (without storing the result) and sets the zero flag to 1 if the operands are equal; likewise, the TEST instruction (AND without store) sets the flag for bitwise equivalence to zero. These operations enable efficient isolation of the zero flag for detecting equality or null states. Common patterns emerge in zero flag usage across these operations: a zero result from (as in CMP or ) indicates , while a zero XOR result signals identical values, often leveraged for data comparison without explicit branching. In masking with AND or , the zero flag confirms all targeted bits are cleared, and shifts producing zero detect empty or fully shifted-out values.

Historical Development

Origins in Early Processors

The zero flag's conceptual foundations trace back to architectures of the late , where condition codes facilitated efficient programming by capturing operation results without additional instructions. A notable predecessor is the PDP-11, introduced by in , which included a zero condition code (Z) in its processor status word to indicate when an arithmetic or logical operation yielded a result of zero, enabling streamlined comparisons and branches in resource-limited systems. This design influenced subsequent flag registers by prioritizing compact status tracking for decisions. The zero flag first appeared in microprocessors with the , released in April 1972 as an 8-bit CPU with a 4-bit that included the , set when the accumulator or register result was zero following arithmetic, logical, or data transfer operations. This innovation built directly on precedents like the PDP-11, adapting them for the emerging era of single-chip processors to support zero detection in accumulator-based computations, a common paradigm in early embedded and personal computing applications. The successor , released in April 1974, retained and expanded this with a 5-bit including the . Standardization and expansion followed in the mid-1970s. The , introduced in 1976 as an enhanced 8-bit successor to the 8080, retained the Z flag in its flag register, maintaining compatibility while adding power-saving features for broader industrial use. By 1978, the extended this to 16-bit operations, incorporating ZF in a 16-bit flags register to handle wider data paths, thus enabling zero checks across registers and memory for more complex programs. The primary motivation for including the zero flag in these early designs was to minimize instruction counts in memory-constrained environments, allowing programmers to implement loops, tests, and end-of-data detections with single-branch instructions rather than multi-step comparisons. For instance, in resource-limited systems like those running on 4-64 KB of , this reduced code size and execution time for frequent operations such as scanning buffers or validating results. A key milestone in its practical impact was its role in early operating systems like (1974), where 8080 assembly code leveraged the Z flag for efficient file and handling, such as detecting terminators in filenames or entries during disk I/O routines.

Evolution Across Generations

In the 16-bit and 32-bit eras of x86 processors, the zero flag (ZF) remained fundamentally unchanged from its origins, serving as bit 6 in the , set to 1 when arithmetic or logical results equaled and cleared otherwise. The , introduced in 1982, extended this behavior to , where ZF supported conditional branching and checks without alteration to its core definition, though it integrated with segment descriptor validation instructions like LAR (Load Access Rights), which set ZF to indicate accessible descriptors based on current level (CPL) versus descriptor level (DPL). The subsequent Intel 80386, released in 1985, expanded to 32-bit operations in , preserving ZF's role while incorporating it into interrupt handling: during exceptions or interrupts, the EFLAGS register (including ZF) is pushed onto the stack for preservation, allowing handlers to evaluate pre-interrupt conditions such as from prior comparisons, with restoration via IRET to maintain program flow. This integration enabled ZF to influence task switches and virtual-8086 mode transitions, where it tested results in operations (e.g., CMPS with REPE terminating on ZF=1 for ). The transition to 64-bit architectures extended ZF without modification to its semantics, adapting it to wider s for enhanced scalability. In (), introduced with the in 2003, ZF resides unchanged as bit 6 in the 64-bit RFLAGS , supporting the same arithmetic and logical operations across 64-bit operands while integrating with legacy modes for . Similarly, ARMv8 (2011) refined the zero condition flag (Z) within the NZCV for execution state, where it is set to 1 if the result of flag-setting instructions (e.g., CMP or ADD) on 64-bit registers equals zero, providing explicit support for wider integer and floating-point comparisons in a RISC condition code model that avoids implicit flag dependencies. Vector and SIMD extensions introduced mechanisms for element-wise zero detection, augmenting the scalar ZF with parallel processing capabilities. (SSE), launched with in , utilized the MXCSR to manage floating-point , including the denormals-are-zero (DAZ) bit (bit 6) that treats subnormal numbers as zero for operations and the zero exception flag (ZE, bit 2) that signals divide-by-zero events across lanes, enabling per-element handling in 128-bit XMM registers without altering the core ZF. 512 (AVX-512), introduced in 2016 with , enhanced this via eight mask registers (k0-k7), where the zeroing-masking behavior (controlled by a writemask policy) conditionally zeros non-masked elements in 512-bit ZMM registers during operations like VADDPS, effectively performing masked zero checks for conditional execution and reducing branching overhead in . RISC architectures influenced ZF adaptations by favoring implicit result encoding over dedicated flags, promoting efficiency in pipelined designs. The (1991) implemented comparison via SLT (Set on Less Than), which sets the destination to if the signed source is less than the target (else ), providing an implicit zero result for equality tests without affecting any flags, a design choice that streamlined 64-bit integer pipelines by avoiding flag interlocks. In the PowerPC G5 ( , 2003), vector extensions integrated zero detection into the condition (CR) fields through instructions like VCMPEQUB (vector compare equal unsigned byte), which sets CR bits to indicate all- vectors or per-element in 128-bit vector scalar registers (VR0-VR31), enabling SIMD conditional flow without a separate ZF while leveraging the scalar CR's bit (CR0) for hybrid operations.

References

  1. [1]
    CSCI 2400 - Computer Architecture
    The zero flag (ZF) is used to indicate whether the previous arithmetic operation resulted in a zero value being stored to the destination operand.
  2. [2]
    Condition Codes 1: Condition Flags and Codes - Arm Developer
    Sep 11, 2013 · Z : Zero. The Z flag is set if the result of the flag-setting instruction is zero. C : Carry (or Unsigned Overflow). The C flag is set if the ...
  3. [3]
    x86 Architecture - Windows drivers | Microsoft Learn
    Dec 13, 2024 · x86 Flags ; if, Interrupt Flag, 0 1, diei, Interrupts disabled - Interrupts enabled ; sf, Sign Flag, 0 1, plng, Positive (or zero) - Negative.
  4. [4]
    MIPS - Alan Clements
    MIPS register r0, $0, permanently holds the value 0 and cannot be changed. Consequently, and instruction that specifies register 0 is able to use the constant 0 ...<|separator|>
  5. [5]
    [PDF] Intel® Quark SoC X1000 Core Developer's Manual
    ... ZF (Zero Flag, bit 6). ZF is set if all bits of the result are 0; otherwise, it is reset. AF (Auxiliary Carry Flag, bit 4). The Auxiliary Flag is used to ...
  6. [6]
    Program Status Registers (PSRs) - Arm Developer
    The purpose of an SPSR is to record the pre-exception value of the CPSR. When taking an exception, the processor copies the CPSR to the SPSR of the exception ...
  7. [7]
    APSR: Application Program Status Register - Arm Developer
    Zero condition flag. Set to 1 if the result of the last flag-setting instruction was zero, and to 0 otherwise. A result of zero often indicates an equal result ...
  8. [8]
    Conditional execution - Arm Developer
    The condition flags​​ The APSR contains the following condition flags: N. Set to 1 when the result of the operation was negative, cleared to 0 otherwise.
  9. [9]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    ... (Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2A) under the heading Emulation. Compilers and assemblers may implement the following ...
  10. [10]
  11. [11]
    [PDF] Intel® 64 and IA-32 Architectures Software Developer's Manual
    Jan 2, 2012 · Intel® 64 architecture is the instruction set architecture and programming environment which is the superset of Intel's 32-bit and 64-bit ...Missing: x86 | Show results with:x86
  12. [12]
    CPSR: Current Program Status Register - Arm Developer
    Zero condition flag. Set to 1 if the result of the last flag-setting instruction was zero, and to 0 otherwise. A result of zero often indicates an equal result ...
  13. [13]
    NZCV: Condition Flags - Arm A-profile Architecture Registers
    Zero condition flag. Set to 1 if the result of the last flag-setting instruction was zero, and to 0 otherwise. A result of zero often indicates an equal result ...
  14. [14]
    Updates to the condition flags - Arm Developer
    Most instructions update the condition flags only if the S suffix is specified. The instructions CMP , CMN , TEQ , and TST always update the flags. The ...
  15. [15]
    Conditional execution - Arm Developer
    In ARM, nearly all instructions can be conditional using suffixes like LT and GE, and the IT instruction for up to four consecutive instructions.
  16. [16]
    [PDF] The ARM Scalable Vector Extension - Alastair Reid
    In this paper we describe the ARM Scalable Vector. Extension (SVE). Several goals guided the design of the architecture. First was the need to extend the ...
  17. [17]
    [PDF] An Instruction Level Energy Characterization of ARM Processors
    The flags can be set by an instruction if the s flag is set in the instruction mnemonic. The purpose of this feature is to reduce the number of branches for ...
  18. [18]
    [PDF] ARM Architecture Reference Manual Thumb-2 Supplement
    This Thumb-2 supplement introduces Thumb-2, changes to Thumb assembly syntax, new 32-bit and 16-bit Thumb instructions, and new 32-bit ARM instructions.
  19. [19]
    [PDF] 6502.pdf
    The zero page instructions allow for shorter code and execution times by only fetching the second byte of the instruction and assuming a zero high address byte.
  20. [20]
    [PDF] 6502 User's Manual - Retro Computing
    The BNE instruction examines the Zero Flag (Z) in the Processor. Status ... Status Flags; 6502 Instruction Set (General);. 65xx-Family Support Chips ...
  21. [21]
    [PDF] pdp11-40.pdf - PDOS-MIT
    All PDP·ll's have a Stack Overflow Boundary at location 400,. The Ker· nel Stack Boundary, in the PDP-11/40 is a variable boundary set through the Stack ...
  22. [22]
  23. [23]
    [PDF] VAX Architecture Reference Manual
    This manual describes the VAX architecture, a successful computer system, and is more precise and complete than other computer architectures.
  24. [24]
  25. [25]
    [PDF] Motorola M68000 Family Programmer's Reference Manual
    This manual contains detailed information about software instructions used by the microprocessors and coprocessors in the M68000 family, including: MC68000.
  26. [26]
    [PDF] M68000 8-/16-/32-bit microprocessors user's manual
    Refer to M68000PM/AD, M68000 Programmer's Reference Manual, for detailed information on the MC68000 instruction set. The six microprocessors are very ...
  27. [27]
    [PDF] MIPS IV Instruction Set
    MIPS III, or MIPS IV instruction, the processor must both support the architecture ... # The value 0 has been stored in FLAG and that value is observable by B.<|separator|>
  28. [28]
    [PDF] The SPARC Architecture Manual
    Page 1. The SPARC Architecture Manual. Version 9. SPARC International, Inc. San Jose, California. David L. Weaver / Tom ... Condition Codes Register (CCR) ...
  29. [29]
    [PDF] The SPARC Architecture Manual
    The SPARC Architecture Manual, version 8, includes SPARC attributes, system components, and compliance definitions. SPARC is a trademark of SPARC International ...
  30. [30]
    [PDF] PowerPC User Instruction Set Architecture Book I Version 2.01
    Book II, PowerPC Virtual Environment. Architecture defines the storage model and related instructions and facilities available to the application programmer, ...
  31. [31]
  32. [32]
    8 - CS 131/CSCI 1310: Fundamentals of Computer Systems
    In many cases, control flow first involves a flag-setting instruction and then a conditional branch based on the values of the flags register. This allows for ...
  33. [33]
    ADD, SUB, RSB, ADC, SBC, and RSC - Arm Developer
    The ADD instruction adds the values in Rn and Operand2 or imm12 . The SUB instruction subtracts the value of Operand2 or imm12 from the value in Rn .
  34. [34]
    [PDF] tel INTEL CORP . 1974 - Bitsavers.org
    A brief description of Intel's 8080 CPU is essential to a thorough ... • A 5-bit flag register: zero, carry, sign, parity and aux il iary carry.
  35. [35]
    [PDF] intel-8085_datasheet.pdf
    The Intel® 8085A is a complete 8 bit parallel Central Processing Unit (CPU). Its instruction set is 100% software compatible with the 8080A microprocessor, and ...
  36. [36]
    [PDF] intel-8086_datasheet.pdf
    The Intel 8086 is a 16-bit CPU with 1MB direct addressing, 5-10 MHz clock rates, 14-word register set, 24 operand addressing, and 8/16-bit arithmetic.
  37. [37]
    [PDF] CP/M Assembly Language Programming - Bitsavers.org
    The flag bit that only records parity in the 8080 is used also to ... FCBTY and stuff a zero there to terminate the file name string. The save is ...
  38. [38]
    None
    Below is a merged summary of the Zero Flag (ZF) in the 80386 processor, focusing on its role in Protected Mode and Interrupt Handling. To retain all information in a dense and organized manner, I will use a combination of narrative text and a table in CSV format for detailed instruction-specific details. The narrative provides an overview, while the table captures specific behaviors, conditions, and references across the summaries.
  39. [39]
    [PDF] MIPS R4000 Microprocessor User's Manual
    Apr 1, 1994 · Coprocessor 0 (system coprocessor) instructions perform operations on CP0 registers to control the memory management and exception handling ...
  40. [40]
    [PDF] AltiVec™ Technology Programming Environments Manual
    ... PowerPC™ architecture and the AltiVec™ technology. This book describes how the AltiVec technology relates to the 32-bit portions of the PowerPC architecture.Missing: G5 | Show results with:G5