第一次遇到这种文件. 大S文件, 属于汇编代码文件? 该如何使用VC6处理并最终编译到项目中去?
解决方案 »
- 你是如何review代码?
- VS2008中使用VC,如何添加类的时候自动带上命名空间
- 怎样vc外部控制autocad
- 对话框的popup 、overlapped、child 这三种style有什么区别?特点又是什么?
- 请教一SQL
- 算法运行时间
- release版的错误Test error LNK2005: _exit already defined in MSVCRT.lib(MSVCR71.dll) 怎么解决
- 某些打印机打印反向问题,急盼答复!!!!!!!!!!!!!!!!!!!
- 急急急 用access中的数据来画椭圆,怎么画呀??知道的能该代码吗??谢谢
- 关于 CMAP
- UpdateData(TRUE);和UpdateData(false);在这句话中意思是什么
- 用memcpy函数时遇到的一个极诡异的现象,高人解释下
建议用UltraEdit之类的16进制编辑器打开
;# MASM as well as the GNU assembler in one file.
;#
;#
;# MASM:
;# ml.exe /c /nologo /Fo"call.obj" /W3 /Zi /errorReport:prompt /Ta"call.S"
;#
;# For enabling debug support use:
;# ml.exe /c /nologo /D"SYSTEM_LOG_DEBUG" /Fo"call.obj" /W3 /Zi /errorReport:prompt /Ta"call.S"
;#
;# GNU toolchain:
;# gcc -x assembler-with-cpp -s call.S -c
;#
;# For enabling debug support use:
;# gcc -x assembler-with-cpp -DSYSTEM_LOG_DEBUG -s call.S -c
// SHA-1 MMX implementation, (C) 2005 Simon Marechal ([email protected])// This code computes two (with sse now four) SHA-1 digests at the same time. It
// doesn't take care of padding (0x80 and size << 3), so make
// sure the last input block is properly padded. Both 64-byte
// input blocks must be (four bytes) interleaved.#if defined(__x86_64__) && defined(__APPLE__)
#define MANGLE(x) x(%rip)
#else
#define MANGLE(x) x
#endif#if defined(__i386__) || defined(__x86_64__).globl shasse2_init;
.globl shasse2_ends;
.globl shasse2_data;
.globl shasse2_cpuid;.globl _shasse2_init;
.globl _shasse2_ends;
.globl _shasse2_data;
.globl _shasse2_cpuid;.data
#ifdef __APPLE__
.align(12)
#else
.align(16)
#endif
const_init_a:
.long 0x67452301
.long 0x67452301
.long 0x67452301
.long 0x67452301
const_init_b:
.long 0xEFCDAB89
.long 0xEFCDAB89
.long 0xEFCDAB89
.long 0xEFCDAB89
const_init_c:
.long 0x98BADCFE
.long 0x98BADCFE
.long 0x98BADCFE
.long 0x98BADCFE
const_init_d:
.long 0x10325476
.long 0x10325476
.long 0x10325476
.long 0x10325476
const_init_e:
.long 0xC3D2E1F0
.long 0xC3D2E1F0
.long 0xC3D2E1F0
.long 0xC3D2E1F0
const_stage0:
.long 0x5A827999
.long 0x5A827999
.long 0x5A827999
.long 0x5A827999
const_stage1:
.long 0x6ED9EBA1
.long 0x6ED9EBA1
.long 0x6ED9EBA1
.long 0x6ED9EBA1
const_stage2:
.long 0x8F1BBCDC
.long 0x8F1BBCDC
.long 0x8F1BBCDC
.long 0x8F1BBCDC
const_stage3:
.long 0xCA62C1D6
.long 0xCA62C1D6
.long 0xCA62C1D6
.long 0xCA62C1D6
const_ff00:
.long 0xFF00FF00
.long 0xFF00FF00
.long 0xFF00FF00
.long 0xFF00FF00
const_00ff:
.long 0x00FF00FF
.long 0x00FF00FF
.long 0x00FF00FF
.long 0x00FF00FF#define ctxa %xmm0
#define ctxb %xmm1
#define ctxc %xmm2
#define ctxd %xmm3
#define ctxe %xmm4
#define tmp1 %xmm5
#define tmp2 %xmm6
#define tmp3 %xmm7
#define tmp4 ctxa
#define tmp5 ctxb#ifdef __x86_64__
#define edx_rsi %rsi
#define ecx_rdx %rdx
#define eax_rdi %rdi
#else
#define edx_rsi %edx
#define ecx_rdx %ecx
#define eax_rdi %eax
#endif// movdqa movapd#define F0(x,y,z) \
movdqa x, tmp2; \
movdqa x, tmp1; \
pand y, tmp2; \
pandn z, tmp1; \
por tmp2, tmp1; #define F1(x,y,z) \
movdqa z, tmp1; \
pxor y, tmp1; \
pxor x, tmp1#define F2(x,y,z) \
movdqa x, tmp1; \
movdqa x, tmp2; \
pand y, tmp1; \
por y, tmp2; \
pand z, tmp2; \
por tmp2, tmp1;
#define subRoundX(a, b, c, d, e, f, k, data) \
f(b,c,d); \
movdqa a, tmp2; \
movdqa a, tmp3; \
paddd tmp1, e; \
pslld $5, tmp2; \
psrld $27, tmp3; \
por tmp3, tmp2; \
paddd tmp2, e; \
movdqa b, tmp2; \
pslld $30, b; \
paddd MANGLE(k), e; \
psrld $2, tmp2; \
por tmp2, b; \
movdqa (data*16)(edx_rsi), tmp1; \
movdqa tmp1, tmp2; \
pand MANGLE(const_ff00), tmp1; \
pand MANGLE(const_00ff), tmp2; \
psrld $8, tmp1; \
pslld $8, tmp2; \
por tmp2, tmp1; \
movdqa tmp1, tmp2; \
psrld $16, tmp1; \
pslld $16, tmp2; \
por tmp2, tmp1; \
movdqa tmp1, (data*16)(ecx_rdx); \
paddd tmp1, e;#define subRoundY(a, b, c, d, e, f, k, data) \
movdqa ((data- 3)*16)(ecx_rdx), tmp1; \
pxor ((data- 8)*16)(ecx_rdx), tmp1; \
pxor ((data-14)*16)(ecx_rdx), tmp1; \
pxor ((data-16)*16)(ecx_rdx), tmp1; \
\
movdqa tmp1, tmp2; \
pslld $1, tmp1; \
psrld $31, tmp2; \
por tmp2, tmp1; \
movdqa tmp1, (data*16)(ecx_rdx); \
paddd tmp1, e; \
f(b,c,d); \
movdqa a, tmp2; \
movdqa a, tmp3; \
paddd tmp1, e; \
pslld $5, tmp2; \
psrld $27, tmp3; \
por tmp3, tmp2; \
paddd tmp2, e; \
movdqa b, tmp2; \
pslld $30, b; \
paddd MANGLE(k), e; \
psrld $2, tmp2; \
por tmp2, b;
.text// arg 1 (eax) (64bit: rdi): context (4*20 bytes) shasse2_init:
_shasse2_init: movdqa MANGLE(const_init_a), ctxa
movdqa MANGLE(const_init_b), ctxb
movdqa MANGLE(const_init_c), ctxc
movdqa MANGLE(const_init_d), ctxd
movdqa MANGLE(const_init_e), ctxe movdqa ctxa, 0(eax_rdi)
movdqa ctxb, 16(eax_rdi)
movdqa ctxc, 32(eax_rdi)
movdqa ctxd, 48(eax_rdi)
movdqa ctxe, 64(eax_rdi) ret// arg 1 (eax) (64bit: rdi): context (4*20 bytes)
// arg 2 (edx) (64bit: rsi) : digests (4*20 bytes) shasse2_ends:
_shasse2_ends: movdqa 0(eax_rdi), ctxa
movdqa 16(eax_rdi), ctxb
movdqa 32(eax_rdi), ctxc
movdqa 48(eax_rdi), ctxd
movdqa 64(eax_rdi), ctxe movdqa MANGLE(const_ff00), tmp3
movdqa ctxa, tmp1
movdqa ctxb, tmp2
pand tmp3, ctxa
pand tmp3, ctxb
movdqa MANGLE(const_00ff), tmp3
pand tmp3, tmp1
pand tmp3, tmp2
psrld $8, ctxa
psrld $8, ctxb
pslld $8, tmp1
pslld $8, tmp2
por tmp1, ctxa
por tmp2, ctxb
movdqa ctxa, tmp1
movdqa ctxb, tmp2
psrld $16, ctxa
psrld $16, ctxb
pslld $16, tmp1
pslld $16, tmp2
por tmp1, ctxa
por tmp2, ctxb
movdqa ctxa, 0(edx_rsi)
movdqa ctxb, 16(edx_rsi) movdqa MANGLE(const_ff00), tmp5
movdqa ctxc, tmp1
movdqa ctxd, tmp2
movdqa ctxe, tmp3
pand tmp5, ctxc
pand tmp5, ctxd
pand tmp5, ctxe
movdqa MANGLE(const_00ff), tmp5
pand tmp5, tmp1
pand tmp5, tmp2
pand tmp5, tmp3
psrld $8, ctxc
psrld $8, ctxd
psrld $8, ctxe
pslld $8, tmp1
pslld $8, tmp2
pslld $8, tmp3
por tmp1, ctxc
por tmp2, ctxd
por tmp3, ctxe
movdqa ctxc, tmp1
movdqa ctxd, tmp2
movdqa ctxe, tmp3
psrld $16, ctxc
psrld $16, ctxd
psrld $16, ctxe
pslld $16, tmp1
pslld $16, tmp2
pslld $16, tmp3
por tmp1, ctxc
por tmp2, ctxd
por tmp3, ctxe movdqa ctxc, 32(edx_rsi)
movdqa ctxd, 48(edx_rsi)
movdqa ctxe, 64(edx_rsi) ret// arg 1 (eax) (64bit: rdi): context (4*20 bytes)
// arg 2 (edx) (64bit: rsi): input data (4*64 bytes)
// arg 3 (ecx) (64bit: rdx): workspace (1280 bytes) shasse2_data:
_shasse2_data: movdqa 0(eax_rdi), ctxa
movdqa 16(eax_rdi), ctxb
movdqa 32(eax_rdi), ctxc
movdqa 48(eax_rdi), ctxd
movdqa 64(eax_rdi), ctxe