1 / 12

Pentium IA-32 Maskinarkitekturen Kort resume – uge 5

Pentium IA-32 Maskinarkitekturen Kort resume – uge 5. Intel 4004 and Pentium 4. http://www.intel.com/museum/archives/index.htm http://download.intel.com/products/roadmap/roadmap.pdf Today several families/architectures (performance, power, cost). Pentium IA-32. software. IA-32. hardware.

Download Presentation

Pentium IA-32 Maskinarkitekturen Kort resume – uge 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pentium IA-32 MaskinarkitekturenKort resume – uge 5

  2. Intel 4004 and Pentium 4 http://www.intel.com/museum/archives/index.htm http://download.intel.com/products/roadmap/roadmap.pdf Today several families/architectures (performance, power, cost)

  3. Pentium IA-32 software IA-32 hardware

  4. Maskinkode-niveauet • Registre • Lagermodellen • Datatyper • Maskininstruktioner • Instruktionsformater • Addresseringsformer

  5. IA-32 Registre • 6 general-purpose 32-bit registre: • eax, ebx • ecx, edx • esi, edi • 4 special purpose 32-bit registre: • ebp – Pointer register der udpeger aktuelt stakafsnit. • esp – Pointer register der udpeger staktoppen. • eip – programtælleren (instruction pointer). • eflags – status register (Program Status Word – PSW).

  6. 0xFFFFFFFF stack ebp dynamisk lager (uallokeret) dynamisk lager (allokeret) bss uinitialiseret data (buffere) data initialiseret data text program 0x00000000 Linux IA-32 Lagermodellen Et 4Gb lineært, byte addresserbart lager opdelt i sektioner: esp heap eip

  7. local 2 local 1 ebp esp old ebp old eip param 1 param 2 param n Funktionskald og stakafsnit Caller: 1. Lægparametrepåstak (omvendt). 2. Udførcallinstruktionen. Callee: 3. Etablernytstakafsnit. 4. Gørpladstillokale variable. 5. Udførkroppenaffunktionen. 6. Lægreturværdi i eaxregistret. 7. Nedlægstakafsnit. 8. Udførretinstruktionen. Caller: • Fjernparametrefrastak. * Bemærkaftagende addresser – vendt lager ebp-8 ebp-4 ebp+8 ebp+12

  8. 32 bit 32 bit 1-4 6-9 ebp ebp esp esp Stakafsnit parametre ebp + 8 old eip ebp + 4 old ebp ebp - 4 lokale variable

  9. C eksempel intmain (void){long x = 42;long y = 53;long z = 0; z = max(x,y);exit(z);} intmax (long a,long b){long m = 0;if (a >= b) m = a;else m = b;return m;}

  10. 1-2 IA-32 Funktionskald (1) .section .datax: .long 42 y: .long 53 z: .long 0 .section .text.globl_start_start: # int main (void) pushl y # push y on stack pushl x # push x on stack call max # invoke max addl $8,%esp # pop parameters from stack movl %eax,z # z = max(x,y) (%eax) movl z,%ebx # return value in ebx register movl $1, %eax # opcode for exit system call int $0x80 # return z (%ebx) 9

  11. 3-4 .type max, @functionmax: # int max (long a,long b) pushl %ebp # push prev base pointer movl %esp,%ebp # setup new base pointer subl $4,%esp # local variable m movl $0,-4(%ebp) # m = 0 movl 8(%ebp),%eax # load a into eax movl 12(%ebp),%ebx # load b into ebx cmpl %eax,%ebx # compute b-a <=0, set eflags jle if # if (a >= b) jmp elseif: movl %eax,-4(%ebp) # m = a jmp endif else: movl %ebx,-4(%ebp) # m = y endif:movl -4(%ebp),%eax # return value in %eax movl %ebp,%esp # restore esp (remove locals)popl %ebp # restore ebp ret # return m 6-8

  12. Funktionskald Stakken bruges til at implementere funktionskald. Maskininstruktionerne call og ret bruges: call A- læg “næste” eip på stakken og sæt “eip = A”. ret - sæt eip = top af stak og fjern øverste element. I visse tilfælde bruges maskininstruktionerne enter og leave. Konventionen fra C bruges: Application Binary Interface.

More Related