 |
Changeset 3438
- Timestamp:
- 04/17/08 01:00:04
(5 months ago)
- Author:
- sean
- Message:
Changed use of EBX to scratch register EDX to avoid the need to save/restore EBX in function call. This closes #593
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r2356 |
r3438 |
|
| 378 | 378 | volatile asm |
|---|
| 379 | 379 | { |
|---|
| 380 | | mov BL, 42; |
|---|
| | 380 | mov DL, 42; |
|---|
| 381 | 381 | mov AL, 42; |
|---|
| 382 | 382 | mov ECX, val; |
|---|
| 383 | 383 | lock; |
|---|
| 384 | | cmpxchg [ECX], BL; |
|---|
| | 384 | cmpxchg [ECX], DL; |
|---|
| 385 | 385 | } |
|---|
| 386 | 386 | } |
|---|
| … | … | |
| 403 | 403 | volatile asm |
|---|
| 404 | 404 | { |
|---|
| 405 | | mov BX, 42; |
|---|
| | 405 | mov DX, 42; |
|---|
| 406 | 406 | mov AX, 42; |
|---|
| 407 | 407 | mov ECX, val; |
|---|
| 408 | 408 | lock; |
|---|
| 409 | | cmpxchg [ECX], BX; |
|---|
| | 409 | cmpxchg [ECX], DX; |
|---|
| 410 | 410 | } |
|---|
| 411 | 411 | } |
|---|
| … | … | |
| 429 | 429 | volatile asm |
|---|
| 430 | 430 | { |
|---|
| 431 | | mov EBX, 42; |
|---|
| | 431 | mov EDX, 42; |
|---|
| 432 | 432 | mov EAX, 42; |
|---|
| 433 | 433 | mov ECX, val; |
|---|
| 434 | 434 | lock; |
|---|
| 435 | | cmpxchg [ECX], EBX; |
|---|
| | 435 | cmpxchg [ECX], EDX; |
|---|
| 436 | 436 | } |
|---|
| 437 | 437 | } |
|---|
| … | … | |
| 526 | 526 | { |
|---|
| 527 | 527 | mov EAX, val; |
|---|
| 528 | | mov BL, newval; |
|---|
| | 528 | mov DL, newval; |
|---|
| 529 | 529 | lock; |
|---|
| 530 | | xchg [EAX], BL; |
|---|
| | 530 | xchg [EAX], DL; |
|---|
| 531 | 531 | } |
|---|
| 532 | 532 | } |
|---|
| … | … | |
| 536 | 536 | { |
|---|
| 537 | 537 | mov EAX, val; |
|---|
| 538 | | mov BL, newval; |
|---|
| 539 | | mov [EAX], BL; |
|---|
| | 538 | mov DL, newval; |
|---|
| | 539 | mov [EAX], DL; |
|---|
| 540 | 540 | } |
|---|
| 541 | 541 | } |
|---|
| … | … | |
| 553 | 553 | { |
|---|
| 554 | 554 | mov EAX, val; |
|---|
| 555 | | mov BX, newval; |
|---|
| | 555 | mov DX, newval; |
|---|
| 556 | 556 | lock; |
|---|
| 557 | | xchg [EAX], BX; |
|---|
| | 557 | xchg [EAX], DX; |
|---|
| 558 | 558 | } |
|---|
| 559 | 559 | } |
|---|
| … | … | |
| 563 | 563 | { |
|---|
| 564 | 564 | mov EAX, val; |
|---|
| 565 | | mov BX, newval; |
|---|
| 566 | | mov [EAX], BX; |
|---|
| | 565 | mov DX, newval; |
|---|
| | 566 | mov [EAX], DX; |
|---|
| 567 | 567 | } |
|---|
| 568 | 568 | } |
|---|
| … | … | |
| 580 | 580 | { |
|---|
| 581 | 581 | mov EAX, val; |
|---|
| 582 | | mov EBX, newval; |
|---|
| | 582 | mov EDX, newval; |
|---|
| 583 | 583 | lock; |
|---|
| 584 | | xchg [EAX], EBX; |
|---|
| | 584 | xchg [EAX], EDX; |
|---|
| 585 | 585 | } |
|---|
| 586 | 586 | } |
|---|
| … | … | |
| 590 | 590 | { |
|---|
| 591 | 591 | mov EAX, val; |
|---|
| 592 | | mov EBX, newval; |
|---|
| 593 | | mov [EAX], EBX; |
|---|
| | 592 | mov EDX, newval; |
|---|
| | 593 | mov [EAX], EDX; |
|---|
| 594 | 594 | } |
|---|
| 595 | 595 | } |
|---|
| … | … | |
| 614 | 614 | { |
|---|
| 615 | 615 | mov RAX, val; |
|---|
| 616 | | mov RBX, newval; |
|---|
| | 616 | mov RDX, newval; |
|---|
| 617 | 617 | lock; |
|---|
| 618 | | xchg [RAX], RBX; |
|---|
| | 618 | xchg [RAX], RDX; |
|---|
| 619 | 619 | } |
|---|
| 620 | 620 | } |
|---|
| … | … | |
| 624 | 624 | { |
|---|
| 625 | 625 | mov RAX, val; |
|---|
| 626 | | mov RBX, newval; |
|---|
| 627 | | mov [RAX], RBX; |
|---|
| | 626 | mov RDX, newval; |
|---|
| | 627 | mov [RAX], RDX; |
|---|
| 628 | 628 | } |
|---|
| 629 | 629 | } |
|---|
| … | … | |
| 682 | 682 | volatile asm |
|---|
| 683 | 683 | { |
|---|
| 684 | | mov BL, newval; |
|---|
| | 684 | mov DL, newval; |
|---|
| 685 | 685 | mov AL, equalTo; |
|---|
| 686 | 686 | mov ECX, val; |
|---|
| 687 | 687 | lock; // lock always needed to make this op atomic |
|---|
| 688 | | cmpxchg [ECX], BL; |
|---|
| | 688 | cmpxchg [ECX], DL; |
|---|
| 689 | 689 | setz AL; |
|---|
| 690 | 690 | } |
|---|
| … | … | |
| 699 | 699 | volatile asm |
|---|
| 700 | 700 | { |
|---|
| 701 | | mov BX, newval; |
|---|
| | 701 | mov DX, newval; |
|---|
| 702 | 702 | mov AX, equalTo; |
|---|
| 703 | 703 | mov ECX, val; |
|---|
| 704 | 704 | lock; // lock always needed to make this op atomic |
|---|
| 705 | | cmpxchg [ECX], BX; |
|---|
| | 705 | cmpxchg [ECX], DX; |
|---|
| 706 | 706 | setz AL; |
|---|
| 707 | 707 | } |
|---|
| … | … | |
| 716 | 716 | volatile asm |
|---|
| 717 | 717 | { |
|---|
| 718 | | mov EBX, newval; |
|---|
| | 718 | mov EDX, newval; |
|---|
| 719 | 719 | mov EAX, equalTo; |
|---|
| 720 | 720 | mov ECX, val; |
|---|
| 721 | 721 | lock; // lock always needed to make this op atomic |
|---|
| 722 | | cmpxchg [ECX], EBX; |
|---|
| | 722 | cmpxchg [ECX], EDX; |
|---|
| 723 | 723 | setz AL; |
|---|
| 724 | 724 | } |
|---|
| … | … | |
| 740 | 740 | volatile asm |
|---|
| 741 | 741 | { |
|---|
| 742 | | mov RBX, newval; |
|---|
| | 742 | mov RDX, newval; |
|---|
| 743 | 743 | mov RAX, equalTo; |
|---|
| 744 | 744 | mov RCX, val; |
|---|
| 745 | 745 | lock; // lock always needed to make this op atomic |
|---|
| 746 | | cmpxchg [RCX], RBX; |
|---|
| | 746 | cmpxchg [RCX], RDX; |
|---|
| 747 | 747 | setz AL; |
|---|
| 748 | 748 | } |
|---|
| … | … | |
| 757 | 757 | volatile asm |
|---|
| 758 | 758 | { |
|---|
| | 759 | push EDI; |
|---|
| | 760 | push EBX; |
|---|
| 759 | 761 | lea EDI, newval; |
|---|
| 760 | 762 | mov EBX, [EDI]; |
|---|
| … | … | |
| 765 | 767 | mov EDI, val; |
|---|
| 766 | 768 | lock; // lock always needed to make this op atomic |
|---|
| 767 | | cmpxch8b [EDI]; |
|---|
| | 769 | cmpxchg8b [EDI]; |
|---|
| 768 | 770 | setz AL; |
|---|
| | 771 | pop EBX; |
|---|
| | 772 | pop EDI; |
|---|
| 769 | 773 | } |
|---|
| 770 | 774 | } |
|---|
Download in other formats:
|
 |