Advertisement
anechka_ne_plach

Untitled

Dec 6th, 2021
1,392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         .text
  2.         .global main
  3. main:
  4.         mov     $1, %edx
  5. readloop:
  6.         call    readi32
  7.         jb      fin
  8.         cmp     $0, %eax
  9.         jnl     pushstack
  10. popstack:
  11.         mov     %eax, %ebx
  12.         // ebx = -ebx
  13.         mov     $0, %eax
  14.         sub     %ebx, %eax
  15.         mov     %eax, %ebx
  16.         cmp     $0, %ebx
  17.         je      emptycase
  18.  
  19.         mov     pers_stack+4(, %ebx, 8), %eax
  20.         cmp     $0, %eax
  21.         je      emptycase
  22.         mov     pers_stack(, %ebx, 8), %eax
  23.         call    writei32
  24.         mov     pers_stack+4(, %ebx, 8), %eax
  25.         mov     %eax, %ecx
  26.         mov     (%ecx), %eax
  27.         mov     %eax, pers_stack(, %edx, 8)
  28.         mov     4(%ecx), %eax
  29.         mov     %eax, pers_stack+4(, %edx, 8)
  30.         inc     %edx
  31.         jmp     readloop
  32. emptycase:
  33.         mov     $-1, %eax
  34.         call    writei32
  35.         jmp     readloop
  36. pushstack:
  37.         mov     %eax, %ebx
  38.         call    readi32
  39.         test    %ebx, %ebx
  40.         jz      zerocase
  41.         mov     %eax, pers_stack(, %edx, 8)
  42.         lea     pers_stack(, %ebx, 8), %ebx
  43.         mov     %ebx, pers_stack+4(, %edx, 8)
  44.         inc     %edx
  45.         jmp    readloop
  46. zerocase:
  47.         mov     %eax, pers_stack(, %edx, 8)
  48.         mov     $pers_stack, %eax
  49.         mov     %eax, pers_stack+4(, %edx, 8)
  50.         inc     %edx
  51.         jmp   readloop
  52. fin:
  53.         call    finish
  54.  
  55.  
  56.         .data
  57. pers_stack:
  58.         // [(int x)(parent)]
  59.         .skip   8008
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement