Модератор: Модераторы
program pppp;
Var a,b:integer;
begin
write('enter a:'); readln(a);
b:=100;
if (a=0) then
b:=200;
writeln('a=',a,' b=',b);
end.
.file "pppp.pp"
# Begin asmlist al_procedures
.section .text.n__main,"x"
.balign 16,0x90
.globl PASCALMAIN
PASCALMAIN:
.globl _main
_main:
# Temps allocated between ebp-4 and ebp+0
# [pppp.pp]
# [5] begin
pushl %ebp
movl %esp,%ebp
leal -4(%esp),%esp
pushl %ebx
call FPC_INITIALIZEUNITS
# [6] write('enter a:'); readln(a);
call fpc_get_output
movl %eax,%ebx
movl $_$PPPP$_Ld1,%ecx
movl %ebx,%edx
movl $0,%eax
call fpc_write_text_shortstr
call FPC_IOCHECK
movl %ebx,%eax
call fpc_write_end
call FPC_IOCHECK
call fpc_get_input
movl %eax,%ebx
leal -4(%ebp),%edx
movl %ebx,%eax
call fpc_read_text_sint
call FPC_IOCHECK
movw -4(%ebp),%ax
movw %ax,U_$P$PPPP_$$_A
movl %ebx,%eax
call fpc_readln_end
call FPC_IOCHECK
# [7] b:=100;
movw $100,U_$P$PPPP_$$_B
# [8] if (a=0) then
cmpw $0,U_$P$PPPP_$$_A
je .Lj25
jmp .Lj26
.Lj25:
# [9] b:=200;
movw $200,U_$P$PPPP_$$_B
.Lj26:
# [10] writeln('a=',a,' b=',b);
call fpc_get_output
movl %eax,%ebx
movl $_$PPPP$_Ld2,%ecx
movl %ebx,%edx
movl $0,%eax
call fpc_write_text_shortstr
call FPC_IOCHECK
movswl U_$P$PPPP_$$_A,%ecx
movl %ebx,%edx
movl $0,%eax
call fpc_write_text_sint
call FPC_IOCHECK
movl $_$PPPP$_Ld3,%ecx
movl %ebx,%edx
movl $0,%eax
call fpc_write_text_shortstr
call FPC_IOCHECK
movswl U_$P$PPPP_$$_B,%ecx
movl %ebx,%edx
movl $0,%eax
call fpc_write_text_sint
call FPC_IOCHECK
movl %ebx,%eax
call fpc_writeln_end
call FPC_IOCHECK
# [11] end.
call FPC_DO_EXIT
popl %ebx
leave
ret
# End asmlist al_procedures
# Begin asmlist al_globals
.section .bss
.balign 2
# [3] Var a,b:integer;
U_$P$PPPP_$$_A:
.zero 2
.section .bss
.balign 2
U_$P$PPPP_$$_B:
.zero 2
.section .data.n_INITFINAL,"d"
.balign 4
.globl INITFINAL
INITFINAL:
.long 2,0
.long INIT$_$SYSTEM
.long 0
.long INIT$_$FPINTRES
.long 0
.section .data.n_FPC_THREADVARTABLES,"d"
.balign 4
.globl FPC_THREADVARTABLES
FPC_THREADVARTABLES:
.long 1
.long THREADVARLIST_$SYSTEM
.section .data.n_FPC_RESOURCESTRINGTABLES,"d"
.balign 4
.globl FPC_RESOURCESTRINGTABLES
FPC_RESOURCESTRINGTABLES:
.long 0
.section .data.n_FPC_WIDEINITTABLES,"d"
.balign 4
.globl FPC_WIDEINITTABLES
FPC_WIDEINITTABLES:
.long 0
.section .data.n_FPC_RESSTRINITTABLES,"d"
.balign 4
.globl FPC_RESSTRINITTABLES
FPC_RESSTRINITTABLES:
.long 0
.section .fpc.n_version
.balign 16
.ascii "FPC 3.1.1 [2015/01/10] for i386 - Win32"
.section .data.n___heapsize,"d"
.balign 4
.globl __heapsize
__heapsize:
.long 0
.section .data.n___fpc_valgrind,"d"
.globl __fpc_valgrind
__fpc_valgrind:
.byte 0
# End asmlist al_globals
# Begin asmlist al_typedconsts
.section .rodata.n__$PPPP$_Ld1,"d"
.balign 4
.globl _$PPPP$_Ld1
_$PPPP$_Ld1:
.ascii "\010enter a:\000"
.section .rodata.n__$PPPP$_Ld2,"d"
.balign 4
.globl _$PPPP$_Ld2
_$PPPP$_Ld2:
.ascii "\002a=\000"
.section .rodata.n__$PPPP$_Ld3,"d"
.balign 4
.globl _$PPPP$_Ld3
_$PPPP$_Ld3:
.ascii "\003 b=\000"
# End asmlist al_typedconsts
zub писал(а):Единственная проблема с Exit может быть в случае
- Код: Выделить всё
procedure qwerty
begin
myInitialize(something);
//тут чтото делаем и exit нельзя использовать - something утекет
myFinalize(something);
end;
procedure qwerty;
begin
myInitialize(something);
try
//тут что-то делаем и exit можно использовать
finally
myFinalize(something);
end;
end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 245