Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- // Equivalent C code:
- const short N = 10;
- short a[10] = {26, 21, 1, 18, 23, 15, 1, 32, 18, 19};
- short b[10] = {7, 3, 32, 1, 31, 0, 15, 5, 2, 16};
- short c[10];
- void main() {
- short* pa;
- short* pb;
- short* pc;
- short* pae;
- short* pce;
- short e;
- for(pa = a, pb = b+N-1, pc = c+N-1, pae = a+N;pa != pae;pa++, pb--, pc--){
- *pc = *pa & *pb;
- }
- for(pc = c+N-1, e = 0, pce = c-1;pc != pce;pc--){
- e += *pc;
- }
- }
- */
- .data
- 10
- 26, 21, 1, 18, 23, 15, 1, 32, 18, 19
- 7, 3, 32, 1, 31, 0, 15, 5, 2, 16
- // u C znam da su vec sve nule
- // R0 = N
- // R1 = brojac
- // R2 = adresa a
- // R3 = adresa b
- // R4 = adresa c
- // R5 = racunica
- // R6 = uslov/racunica
- // R7 = e
- .text
- main:
- // R0 ==10
- ld R0, R0
- // R4 ==30
- add R4, R0, R0 // R0+R0==20
- add R4, R4, R0 // R4+R0==30 upisi taj zbir u R4
- // R3 ==20
- sub R3, R4, R0 // R4==30 - R0==10 --> u R3 JE b tj 20 i znam da cu biti na poslednjem u b
- // R2 ==1
- inc R2, R2 //inkrement
- for_counter_binarno:
- sub R6, R1, R0 // kada brojac i N budu jednaki iskace iz petlje
- jmpz for_counter_binarno_end
- for_counter_binarno_body:
- ld R6, R2 // citam vrednost iz niza a u R6
- ld R5, R3 // citam vrednost iz niza b u R5
- and R5, R6, R5 // vrsio se binarno and nad poslednjim u b i prvim u a -> u itearciji 1 ...
- st R5, R4 // ono sto se nalazi nalazi u R5 se smesta u R4 tj u C ali na poslednje mesto
- inc R1, R1 // brojac ++
- dec R4, R4 // pomearam se u levo u C nizu
- dec R3, R3 // pomearam se u levo u B nizu
- inc R2, R2 // pomeram se u desno u A nizu
- jmp for_counter_binarno
- for_counter_binarno_end:
- sub R1, R1, R1 // brojac se setuje na 0
- add R4, R0, R0 // 10+10 ==20 smesta se u R4
- add R4, R4, R0 // R4==30 -> tj poslednji elemenat iz C
- for_counter_set:
- // tmp = counter - N
- sub R6, R1, R0 // u koliko brojac i N budu isti prosao je kroz niz i treba da skoci na kraj
- jmpz for_counter_set_end
- for_counter_dec_body:
- ld R5, R4 // citam vrednost iz R4 i stavljam je u R5 tj C niz mi je tad tu
- add R7, R7, R5 // poslednji iz C smestam u R7
- inc R1, R1 // povecavam brojac
- dec R4, R4 // pomearam se u levo za u C
- jmp for_counter_set // skacem da proveravam brojac i N
- for_counter_set_end:
- end:
- jmp end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement