x86-64 Programming I:
Introduction
Brad Karp
UCL Computer Science
CS 30079thJanuary 2018
(lecture notes derived from material from Phil Gibbons, Randy
Bryant, and Dave O’Hallaron)
Today: x86-64 Basics
¢History of Intel processors and architectures¢Assembly Basics: Registers, operands, move¢Arithmetic & logical operations¢
C, assembly, machine code
Carnegie Mellon2
Carnegie MellonIntel x86 Processors
¢
Dominate laptop/desktop/server market¢
Evolutionary design
§Backwards compatible up until 8086, introduced in 1978§Added more features as time goes on
¢
Complex instruction set computer (CISC)
§Many different instructions with many different formats
§
But, only small subset encountered with Linux programs§Hard to match performance of Reduced Instruction Set Computers (RISC)
§But, Intel has done just that!
§In terms of speed. Less so for low power.
3
Intel x86 Evolution: Milestones
NameDateTransistorsMHz¢8086
1978
29K
5-10
§First 16-bit Intel processor. Basis for IBM PC & DOS§1MB address space
¢
3861985275K16-33
§First 32 bit Intel processor , referred to as IA32§Added “flat addressing”, capable of running Unix
¢
Pentium 4E2004125M2800-3800§First 64-bit Intel x86 processor, referred to as x86-64
¢
Core 22006291M1060-3333§First multi-core Intel processor
¢
Core i7
2008
731M
1600-4400
§Four cores
Carnegie Mellon4
Carnegie MellonIntel x86 Processors, cont.
¢
Machine Evolution
§§§§§§§§
386Pentium
Pentium/MMXPentiumProPentium IIIPentium 4Core 2 DuoCore i7
19851993199719951999200020062008
0.3M3.1M4.5M6.5M8.2M42M291M731M
¢
Added Features
§§§§
Instructions to support multimedia operations
Instructions to enable more efficient conditional operationsTransition from 32 bits to 64 bitsMore cores
5