Some manufacturers have directly admitted such
The first page of the Intel 8086 data sheet lists the processor's features, which include
- Architecture Designed for Powerful Assembly Language and Efficient High Level Languages
In particular, C and other high-level languages use the stack for arguments and local variables. The 8086 has both a stack pointer (SP) and a frame pointer (BP) which address memory using the stack segment (SS) rather than other segments (CS, DS, ES).
The datasheet for the 8087 co-processor has the following section:
PROGRAMMING LANGUAGE SUPPORT
Programs for the 8087 can be written in Intel's high-level languages for 8086/8088 and 80186/80188 systems; ASM-86 (the 8086, 8088 assembly language), PL/M-86, FORTRAN-86, and PASCAL-86.
The 8028680186 added several instructions to the architecture to aid high-level languages. PUSHA
, POPA
, ENTER
, and LEAVE
help with subroutine calls. The BOUND
instruction was useful for array bounds checking and switch
-style control statements. Other instructions unrelated to high-level languages were added as well.
The 80386 added bitfield instructions, which are used in C.
The Motorola MC68000 Microprocessor User's Manual states:
2.2.2 Structured Modular Programming
[...] The availability of advanced, structured assemblers and block-structured high-level languages such as Pascal simplifies modular programming. Such concepts are virtually useless, however, unless parameters are easily transferred between and within software modules that operate on a re-entrant and recursive basis. [...] The MC68000 provides architectural features that allow efficient re-entrant modular programming. Two complementary instructions, link and allocate (
LINK
) and unlink (UNLK
), reduce subroutine call overhead by manipulating linked lists of data areas on the stack. The move multiple register instruction (MOVEM
) also reduces subroutine call programming overhead. [...] Other instructions that support modern structured programming techniques are push effective address (PEA
), load effective address (LEA
), return and restore (RTR
), return from exception (RTE
), jump to subroutine (JSR
), branch to subroutine (BSR
), and return from subroutine (RTS
).
The 68020 added bitfield instructions, which are used in C.
Whereas the above processors added instructions to support programming languages, Reduced Instruction-Set Computers (RISC) took the opposite approach. By analyzing which instructions compilers actually used, they were able to discard many complex instructions that weren't being used. This allowed the architecture to be simplified, shorten the instruction cycle length, and reduce instructions to one cycle, speeding up processors significantly.