Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .global main
- main:
- movl $1, %edx
- movl $4, %esi // отступ для получения индекса
- movl $-1, versions(, %edx, 4)
- read:
- jc fin
- call readi32
- jc fin
- or %eax, %eax
- jz push
- jmp pop
- push:
- call readi32
- movl %eax, %ebx // в %ebx лежит i
- call readi32
- mov %eax, %ecx // в %ecx лежит x
- movl %ecx, versions(, %edx, 8) // число
- movl %ebx, versions(%esi, %edx, 8) // индекс элемента-предка
- inc %edx
- jmp read
- pop:
- call readi32
- movl %eax, %ebx // в %ebx индекс состояния
- movl versions(, %ebx, 8), %eax // печатаем вершину стека
- movl versions(%esi, %ebx, 8), %ecx
- cmp $-1, %ecx
- jz empty_stack
- call writei32
- movl versions(%esi, %ebx, 8), %ecx // в %ecx индекс новой головы
- movl versions(, %ecx, 8), %edi
- movl %edi, versions(, %edx, 8)
- movl versions(%esi, %ecx, 8), %edi
- movl %edi, versions(%esi, %edx, 8)
- inc %edx
- jmp read
- empty_stack:
- mov $-1, %eax
- call writei32
- jmp read
- fin:
- call finish
- .data
- versions: // в version лежат пары {число, индекс элемента-предка}
- .skip 4 * 2 * 1001
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement