《操作系统》的实验代码。
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

29 рядки
496 B

  1. .var mutex
  2. .var count
  3. .main
  4. .top
  5. .acquire
  6. mov mutex, %ax
  7. test $0, %ax
  8. jne .acquire
  9. mov $1, %ax
  10. xchg %ax, mutex # atomic swap of 1 and mutex
  11. test $0, %ax # if we get 0 back: lock is free!
  12. jne .acquire # if not, try again
  13. # critical section
  14. mov count, %ax # get the value at the address
  15. add $1, %ax # increment it
  16. mov %ax, count # store it back
  17. # release lock
  18. mov $0, mutex
  19. # see if we're still looping
  20. sub $1, %bx
  21. test $0, %bx
  22. jgt .top
  23. halt