Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

januszcjk123

Kod w assembler - wyjaśnienie przykładu

Rekomendowane odpowiedzi

Witam. Wytłumaczyłby mi ktoś tutaj na podanym przykładzie jak to wszystko działa. Nawet może być w formie "korepetycji" Mogę jakiś przelewik na drobną kwotę komuś zrobić za wyjąsninie.

program example(input, output);

var steps : array [1..10] of integer;
var x, y: integer;

function gcd(a, b: integer): integer;

begin

if b = 0 then gcd := a

else gcd := gcd(b, a mod b)

end;

function bar(z: integer): integer;

var n : integer;

begin
n := z;
bar := 1;
while n > 0 do begin
	bar := bar * 2;
	n := n - 1;
	steps[n] := bar
end
end;

begin

read(x, y);

write(gcd(x, y)) end.

 

Wynikiem tego jest:

jump.i	#example
gcd:
enter.i	#12
je.i	*BP+12,#0,#lab0
mov.i	#0,BP-4
jump.i	#lab1
lab0:
mov.i	#1,BP-4
lab1:
je.i	BP-4,#0,#lab2
mov.i	*BP+16,*BP+8
jump.i	#lab3
lab2:
mod.i	*BP+16,*BP+12,BP-8
push.i	BP+12
push.i	#BP-8
push.i	#BP-12
call.i	#gcd
incsp.i	#12
mov.i	BP-12,*BP+8
lab3:
leave
return
bar:
enter.i	#24
mov.i	*BP+12,BP-4
mov.i	#1,*BP+8
lab4:
jg.i	BP-4,#0,#lab5
mov.i	#0,BP-8
jump.i	#lab6
lab5:
mov.i	#1,BP-8
lab6:
je.i	BP-8,#0,#lab7
mul.i	*BP+8,#2,BP-12
mov.i	BP-12,*BP+8
sub.i	BP-4,#1,BP-16
mov.i	BP-16,BP-4
sub.i	BP-4,#1,BP-20
mul.i	BP-20,#4,BP-20
add.i	#0,BP-20,BP-24
mov.i	*BP+8,*BP-24
jump.i	#lab4
lab7:
leave
return
example:
read.i	40
read.i	44
push.i	#40
push.i	#44
push.i	#48
call.i	#gcd
incsp.i	#12
write.i	48
exit

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

napisałbyś przynajmniej na jaki procek to jest niby skompilowane

IA32 :D widać jak na dłoni tylko składnia jest egzotyczna ...

wygląda na to że listing asm'a jest wypluty przez kompilator ... może FPC

albo jakaś forma pośrednia ...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jak wrzucisz normalny kod ASM w notacji Intela to pomogę, bo narazie to jest jakaś sieka.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...