Harvey Mudd CS 105 - Machine-Level Programming I

Unformatted text preview:

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:TopicsTopicsAssembly Programmer’s Execution ModelAccessing InformationRegistersMemoryArithmetic operationsX86.1.pptCS 105“Tour of the Black Holes of Computing”– 2 –CS 105IA32 ProcessorsIA32 ProcessorsTotally Dominate Computer MarketTotally Dominate Computer MarketEvolutionary DesignEvolutionary DesignStarting in 1978 with 8086 (really 1971 with 4004)Added more features as time goes onStill support old features, although obsoleteComplex Instruction Set Computer (CISC)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!– 3 –CS 105X86 Evolution: Programmer’s ViewX86 Evolution: Programmer’s ViewNameNameDateDateTransistorsTransistors40044004197119712.3K2.3K4-bit processor. First 1-chip microprocessorDidn’t even have interrupts!80088008197219723.3K3.3KLike 4004, but with 8-bit ALU80808080197419746K6KCompatible at source level with 8008Processor in first “kit” computersPricing caused it to beat similar processors with better programming modelMotorola 6800MOS Technologies (MOSTEK) 6502– 4 –CS 105X86 Evolution: Programmer’s ViewX86 Evolution: Programmer’s ViewNameNameDateDateTransistorsTransistors808680861978197829K29K16-bit processor. Basis for IBM PC & DOSLimited to 1MB address space. DOS only gives you 640K802868028619821982134K134KAdded elaborate, but not very useful, addressing schemeBasis for IBM PC-AT and Windows38638619851985275K275KExtended to 32 bits. Added “flat addressing”Capable of running UnixBy 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.5MAdded special collection of instructions for operating on 64-bit vectors of 1, 2, or 4 byte integer dataPentiumProPentiumPro199519956.5M6.5MAdded conditional move instructionsBig change in underlying microarchitecture– 6 –CS 105X86 Evolution: Programmer’s ViewX86 Evolution: Programmer’s ViewNameNameDateDateTransistorsTransistorsPentium IIIPentium III199919998.2M8.2MAdded “streaming SIMD” instructions for operating on 128-bit vectors of 1, 2, or 4 byte integer or floating point dataPentium 4Pentium 42001200142M42MAdded 8-byte formats and 144 new instructions for streaming SIMD mode– 7 –CS 105New Species: IA64New Species: IA64NameNameDateDateTransistorsTransistorsItaniumItanium2001200110M10MExtends to IA64, a 64-bit architectureRadically new instruction set designed for high performanceWill be able to run existing IA32 programsOn-board “x86 engine”Joint project with Hewlett-PackardCompiler-writer’s nightmareItanium 2Itanium 220022002221M221MBig performance boostHasn’t sold well– 8 –CS 105X86 Evolution: ClonesX86 Evolution: ClonesAdvanced Micro Devices (AMD)Advanced Micro Devices (AMD)HistoricallyAMD has followed just behind IntelA little bit slower, a lot cheaperRecentlyRecruited top circuit designers from Digital Equipment Corp.Exploited fact that Intel distracted by IA64Now are close competitors to IntelDeveloped own extension to 64 bitsIntel adopted after IA64 bombed– 10 –CS 105Assembly Programmer’s ViewAssembly Programmer’s ViewProgrammer-Visible StateProgrammer-Visible StateEIP Program CounterAddress of next instructionRegister FileHeavily used program dataCondition CodesStore status information about most recent arithmetic operationUsed for conditional branchingEIPRegistersCPUMemoryObject CodeProgram DataOS DataAddressesDataInstructionsStackConditionCodesMemoryByte addressable arrayCode, user data, (most) OS dataIncludes 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 CodeCode in files p1.c p2.cCompile with command: gcc -O p1.c p2.c -o pUse 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 TypesInteger data of 1, 2, or 4 bytesData valuesAddresses (untyped pointers)Floating-point data of 4, 8, or 10 bytesNo aggregate types such as arrays or structuresJust contiguously allocated bytes in memoryPrimitive OperationsPrimitive OperationsPerform arithmetic function on register or memory dataTransfer data between memory and registerLoad data from memory into registerStore register data into memoryTransfer controlUnconditional jumps to/from proceduresConditional branches– 14 –CS 105Code for sum0x401040 <sum>:0x550x890xe50x8b0x450x0c0x030x450x080x890xec0x5d0xc3Object CodeObject CodeAssemblerAssemblerTranslates .s into .oBinary encoding of each instructionNearly-complete image of executable codeMissing linkages between code in different


View Full Document

Harvey Mudd CS 105 - Machine-Level Programming I

Documents in this Course
Processes

Processes

25 pages

Processes

Processes

27 pages

Load more
Download Machine-Level Programming I
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Machine-Level Programming I and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Machine-Level Programming I 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?