Advertisement
lukicdarkoo

Priprema za Test34, zadatak 1

Apr 26th, 2014
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #long long Racunaj(long long *A, long long *B, char *operacija, int *greska);
  2.  
  3. .section .text
  4. .globl Racunaj
  5.  
  6. Racunaj:
  7.     pushl %ebp
  8.     movl %esp, %ebp #klasika za svaku funkciju
  9.    
  10.     pushl %ebx
  11.     pushl %esi
  12.     pushl %edi  #ova tri registra smjestamo na stek
  13.  
  14.     movl 8(%ebp), %esi  # *A
  15.     movl 12(%ebp), %edi # *B
  16.  
  17.  
  18.     movl 20(%ebp), %ecx
  19.     movl $0, (%ecx)     #postavlja gresku prekoracenja na 0
  20.  
  21.     #odredi operaciju
  22.     movl 16(%ebp), %ecx # *operacija
  23.     cmpb $'*', (%ecx)
  24.     je pomnozi
  25.     cmpb $'+', (%ecx)
  26.     je saberi
  27.     cmpb $'-', (%ecx)
  28.     je oduzmi
  29.  
  30.     #ako je dosao do ovdje operacija nije validna
  31.     jmp greskaOperacija
  32.  
  33.     saberi:
  34.         movl (%esi), %eax
  35.         movl 4(%esi), %edx
  36.  
  37.         movl (%edi), %ecx
  38.         movl 4(%edi), %ebx
  39.  
  40.         addl %ecx, %eax
  41.         adcl %ebx, %edx
  42.         jo greskaPrekoracenje
  43.     jmp kraj
  44.  
  45.     oduzmi:
  46.         movl (%esi), %eax
  47.         movl 4(%esi), %edx
  48.  
  49.         movl (%edi), %ecx
  50.         movl 4(%edi), %ebx
  51.  
  52.         subl %ecx, %eax
  53.         sbbl %ebx, %edx
  54.         jo greskaPrekoracenje
  55.     jmp kraj
  56.  
  57.     pomnozi:
  58.         movl (%esi), %eax
  59.         movl 4(%esi), %edx
  60.  
  61.         movl (%edi), %ecx
  62.         movl 4(%edi), %ebx
  63.    
  64.         cmpl $0, %edx
  65.         je pomnoziEax
  66.        
  67.         cmpl $0, %ebx
  68.         je pomnoziEcx
  69.  
  70.         jmp greskaPrekoracenje
  71.  
  72.  
  73.         pomnoziEax:
  74.             movl $1, %esi
  75.             movl %ecx, %edx
  76.             pomnoziEdxPetlja:
  77.             cmpl %esi, %eax
  78.             je pomnoziEdxPetljaKraj
  79.  
  80.                 addl %edx, %ecx
  81.                 adcl $0, %ebx
  82.                 jo greskaPrekoracenje
  83.                
  84.                 incl %esi
  85.             jmp pomnoziEdxPetlja
  86.             pomnoziEdxPetljaKraj:
  87.  
  88.            
  89.             movl %ecx, %eax
  90.             movl %ebx, %edx
  91.  
  92.             jmp kraj
  93.  
  94.  
  95.         pomnoziEcx:
  96.             movl $1, %esi
  97.             movl %eax, %ebx
  98.             pomnoziEcxPetlja:
  99.             cmpl %esi, %ecx
  100.             je pomnoziEcxPetljaKraj
  101.  
  102.                 addl %ebx, %eax
  103.                 adcl $0, %edx
  104.                 jo greskaPrekoracenje
  105.                
  106.                 incl %esi
  107.             jmp pomnoziEcxPetlja
  108.             pomnoziEcxPetljaKraj:
  109.  
  110.     jmp kraj
  111.  
  112.        
  113.  
  114.     greskaOperacija:
  115.         movl 20(%ebp), %ecx
  116.         movl $1, (%ecx)
  117.  
  118.     greskaPrekoracenje:
  119.         movl 20(%ebp), %ecx
  120.         movl $-1, (%ecx)
  121.        
  122.  
  123.     kraj:
  124.         popl %edi
  125.         popl %esi
  126.         popl %ebx   #zbog onog `pushl` sa pocetka
  127.  
  128.  
  129.         movl %ebp, %esp #klasika za svaku funkciju
  130.         popl %ebp
  131.         ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement