|
|
- .var flag
- .var count
-
- .main
- .top
-
- .acquire
- mov flag, %ax # get flag
- test $0, %ax # if we get 0 back: lock is free!
- jne .acquire # if not, try again
- mov $1, flag # store 1 into flag
-
- # critical section
- mov count, %ax # get the value at the address
- add $1, %ax # increment it
- mov %ax, count # store it back
-
- # release lock
- mov $0, flag # clear the flag now
-
- # see if we're still looping
- sub $1, %bx
- test $0, %bx
- jgt .top
-
- halt
-
|