0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
.org 80h
inc:
push %bp
mov %bp %sp
sub %sp 0010h
mov [%bp + FFFEh] %sp
mov [%bp + FFFCh] %b
lea %a [%bp + FFFCh]
mov %a [%a]
push %a
inc %a
pop %si
mov [%si] %a
jmp @.return.inc
.return.inc:
mov %sp %bp
pop %bp
ret
main:
push %bp
mov %bp %sp
sub %sp 0010h
mov [%bp + FFFCh] %sp
memset [%bp + FFFEh] 0002h 0h
lea %a [%bp + FFFEh]
push %a
mov %a 0000h
pop %si
mov [%si] %a
.L.begin.1:
mov %a 0001h
cmp %a 0h
jz @.0
lea %a [%bp + FFFEh]
push %a
pop %b
call @inc
push %a
mov %a 0050h
pop %si
cmp %si %a
jgz @.compare3
mov %al 1h
.compare3:
mov %ah 0h
cmp %a 0h
jz @.else.2
jmp @.0
jmp @.end.2
.else.2:
.end.2:
.1:
jmp @.L.begin.1
.0:
.return.main:
mov %sp %bp
pop %bp
ret
start:
mov %sp FFFFh
call @main
.return.start:
int 0h
<-------------------->
short inc(short* i)
{
return ++(*i);
}
void main(void)
{
short i = 0s;
while(1)
{
if(inc(&i) > 0x50)
break;
}
}
void start(void)
{
asm("mov %sp FFFFh");
main();
}
да что вы знаете о неоптимизированном коде
Запостил:
kcalbCube ,
27.02.2022 (Updated 27.02.2022 )
Комментарии (0) RSS