Machine-Level Programming I:IA32 ProcessorsX86 Evolution: Programmer’s ViewSlide 4Slide 5Slide 6New Species: IA64X86 Evolution: ClonesAssembly Programmer’s ViewTurning C into Object CodeCompiling Into AssemblyAssembly CharacteristicsObject CodeMachine Instruction ExampleDisassembling Object CodeAlternate DisassemblyWhat Can be Disassembled?Moving Datamovl Operand CombinationsSimple Addressing ModesUsing Simple Addressing ModesUnderstanding SwapSlide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Indexed Addressing ModesAddress Computation ExamplesAddress Computation InstructionSome Arithmetic OperationsSlide 35Using leal for Arithmetic ExpressionsUnderstanding arithSlide 38Another ExampleCISC PropertiesSummary: Abstract MachinesPentium Pro (P6)PentiumPro Block DiagramPentiumPro OperationWhose Assembler?Machine-Level Programming I:Machine-Level Programming I:TopicsTopicsAssembly Programmer’s Execution ModelAccessing InformationRegistersMemoryArithmetic operationsX86.1.pptCS 105“Tour of the Black Holes of Computing”– 2 –CS 105IA32 ProcessorsIA32 ProcessorsTotally Dominate Computer MarketTotally Dominate Computer MarketEvolutionary DesignEvolutionary DesignStarting in 1978 with 8086 (really 1971 with 4004)Added more features as time goes onStill support old features, although obsoleteComplex Instruction Set Computer (CISC)Complex Instruction Set Computer (CISC)Many different instructions with many different formatsBut, only small subset encountered with Linux programsHard to match performance of Reduced Instruction Set Computers (RISC)But, Intel has done just that!– 3 –CS 105X86 Evolution: Programmer’s ViewX86 Evolution: Programmer’s ViewNameNameDateDateTransistorsTransistors40044004197119712.3K2.3K4-bit processor. First 1-chip microprocessorDidn’t even have interrupts!80088008197219723.3K3.3KLike 4004, but with 8-bit ALU80808080197419746K6KCompatible at source level with 8008Processor in first “kit” computersPricing caused it to beat similar processors with better programming modelMotorola 6800MOS Technologies (MOSTEK) 6502– 4 –CS 105X86 Evolution: Programmer’s ViewX86 Evolution: Programmer’s ViewNameNameDateDateTransistorsTransistors808680861978197829K29K16-bit processor. Basis for IBM PC & DOSLimited to 1MB address space. DOS only gives you 640K802868028619821982134K134KAdded elaborate, but not very useful, addressing schemeBasis for IBM PC-AT and Windows38638619851985275K275KExtended to 32 bits. Added “flat addressing”Capable of running UnixBy default, Linux/gcc use no instructions introduced in later models– 5 –CS 105X86 Evolution: Programmer’s ViewX86 Evolution: Programmer’s ViewNameNameDateDateTransistorsTransistors486486198919891.9M1.9MPentiumPentium199319933.1M3.1MPentium/MMXPentium/MMX199719974.5M4.5MAdded special collection of instructions for operating on 64-bit vectors of 1, 2, or 4 byte integer dataPentiumProPentiumPro199519956.5M6.5MAdded conditional move instructionsBig change in underlying microarchitecture– 6 –CS 105X86 Evolution: Programmer’s ViewX86 Evolution: Programmer’s ViewNameNameDateDateTransistorsTransistorsPentium IIIPentium III199919998.2M8.2MAdded “streaming SIMD” instructions for operating on 128-bit vectors of 1, 2, or 4 byte integer or floating point dataPentium 4Pentium 42001200142M42MAdded 8-byte formats and 144 new instructions for streaming SIMD mode– 7 –CS 105New Species: IA64New Species: IA64NameNameDateDateTransistorsTransistorsItaniumItanium2001200110M10MExtends to IA64, a 64-bit architectureRadically new instruction set designed for high performanceWill be able to run existing IA32 programsOn-board “x86 engine”Joint project with Hewlett-PackardCompiler-writer’s nightmareItanium 2Itanium 220022002221M221MBig performance boostHasn’t sold well– 8 –CS 105X86 Evolution: ClonesX86 Evolution: ClonesAdvanced Micro Devices (AMD)Advanced Micro Devices (AMD)HistoricallyAMD has followed just behind IntelA little bit slower, a lot cheaperRecentlyRecruited top circuit designers from Digital Equipment Corp.Exploited fact that Intel distracted by IA64Now are close competitors to IntelDeveloped own extension to 64 bitsIntel adopted after IA64 bombed– 10 –CS 105Assembly Programmer’s ViewAssembly Programmer’s ViewProgrammer-Visible StateProgrammer-Visible StateEIP Program CounterAddress of next instructionRegister FileHeavily used program dataCondition CodesStore status information about most recent arithmetic operationUsed for conditional branchingEIPRegistersCPUMemoryObject CodeProgram DataOS DataAddressesDataInstructionsStackConditionCodesMemoryByte addressable arrayCode, user data, (most) OS dataIncludes stack used to support procedures– 11 –CS 105texttextbinarybinaryCompiler (gcc -S)Assembler (gcc or as)Linker (gcc or ld)C program (p1.c p2.c)Asm program (p1.s p2.s)Object program (p1.o p2.o)Executable program (p)Static libraries (.a)Turning C into Object CodeTurning C into Object CodeCode in files p1.c p2.cCompile with command: gcc -O p1.c p2.c -o pUse optimizations (-O)Put resulting binary in file p– 12 –CS 105Compiling Into AssemblyCompiling Into AssemblyC CodeC Codeint sum(int x, int y){ int t = x+y; return t;}Generated Assembly_sum:pushl %ebpmovl %esp,%ebpmovl 12(%ebp),%eaxaddl 8(%ebp),%eaxmovl %ebp,%esppopl %ebpretObtain with commandgcc -O -S code.cProduces file code.s– 13 –CS 105Assembly CharacteristicsAssembly CharacteristicsMinimal Data TypesMinimal Data TypesInteger data of 1, 2, or 4 bytesData valuesAddresses (untyped pointers)Floating-point data of 4, 8, or 10 bytesNo aggregate types such as arrays or structuresJust contiguously allocated bytes in memoryPrimitive OperationsPrimitive OperationsPerform arithmetic function on register or memory dataTransfer data between memory and registerLoad data from memory into registerStore register data into memoryTransfer controlUnconditional jumps to/from proceduresConditional branches– 14 –CS 105Code for sum0x401040 <sum>:0x550x890xe50x8b0x450x0c0x030x450x080x890xec0x5d0xc3Object CodeObject CodeAssemblerAssemblerTranslates .s into .oBinary encoding of each instructionNearly-complete image of executable codeMissing linkages between code in different
View Full Document