Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: curiosity killed the cat... hi/lo bit C verses Assembly

Author: Eugene Nalimov

Date: 10:59:32 07/18/03

Go up one level in this thread


On July 18, 2003 at 04:05:52, Walter Faxon wrote:

> [...]
>
>I'll believe in a version of MSVC coding cmov when and if I see it.
>

; Listing generated by Microsoft (R) Optimizing Compiler Version 14.00.30506.17

	TITLE	x.c
	.386P
include listing.inc
if @Version gt 510
.model FLAT
else
text	SEGMENT PARA USE32 PUBLIC 'CODE'
text	ENDS
_DATA	SEGMENT DWORD USE32 PUBLIC 'DATA'
_DATA	ENDS
CONST	SEGMENT DWORD USE32 PUBLIC 'CONST'
CONST	ENDS
_BSS	SEGMENT DWORD USE32 PUBLIC 'BSS'
_BSS	ENDS
$$SYMBOLS	SEGMENT BYTE USE32 'DEBSYM'
$$SYMBOLS	ENDS
_TLS	SEGMENT DWORD USE32 PUBLIC 'TLS'
_TLS	ENDS
FLAT	GROUP _DATA, CONST, _BSS
	ASSUME	CS: FLAT, DS: FLAT, SS: FLAT
endif

INCLUDELIB LIBC
INCLUDELIB OLDNAMES

PUBLIC	_MT32table
CONST	SEGMENT
_MT32table DB	00H
	DB	09H
	DB	01H
	DB	0aH
	DB	0dH
	DB	015H
	DB	02H
	DB	01dH
	DB	0bH
	DB	0eH
	DB	010H
	DB	012H
	DB	016H
	DB	019H
	DB	03H
	DB	01eH
	DB	08H
	DB	0cH
	DB	014H
	DB	01cH
	DB	0fH
	DB	011H
	DB	018H
	DB	07H
	DB	013H
	DB	01bH
	DB	017H
	DB	06H
	DB	01aH
	DB	05H
	DB	04H
	DB	01fH
CONST	ENDS
PUBLIC	_leastSigBit64
; Function compile flags: /Ogty
text	SEGMENT
_bb$ = 8						; size = 8
_leastSigBit64 PROC NEAR
; File c:\repro\x.c
; Line 23
	mov	eax, DWORD PTR _bb$[esp-4]
; Line 25
	xor	ecx, ecx
	test	eax, eax
	sete	cl
; Line 26
	test	ecx, ecx
	cmovne	eax, DWORD PTR _bb$[esp]
; Line 27
	lea	edx, DWORD PTR [eax-1]
	xor	edx, eax
; Line 28
	imul	edx, 130329821				; 07c4acddH
; Line 29
	shr	edx, 27					; 0000001bH
	movzx	eax, BYTE PTR _MT32table[edx]
	shl	ecx, 5
	or	eax, ecx
; Line 32
	ret	0
_leastSigBit64 ENDP
text	ENDS
END

We'll fix sete/test sequence in the near future.

Thanks,
Eugene



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.