/programs/develop/libraries/utils/trunk/_atof.inc |
---|
0,0 → 1,300 |
;-----------------------------------------------------------------------------+ |
; ãªæ¨ï ¯à¥®¡à §®¢ ¨ï áâப¨ ¢ ¢¥é¥á⢥®¥ ç¨á«® [ by ManHunter / PCL ] | |
;-----------------------------------------------------------------------------| |
; à ¬¥âàë: | |
; lpStr - 㪠§ â¥«ì ¨á室ãî áâப㠢 ä®à¬ ⥠ASCIIZ | |
; lpResult - 㪠§ â¥«ì ¯¥à¥¬¥ãî-¯à¨¥¬¨ª § 票ï | |
; ¢ë室¥: | |
; EAX = 1 - áâப ãá¯¥è® ¯à¥®¡à §®¢ | |
; EAX = 0 - áâப ¥ ¬®¦¥â ¡ëâì ¯à¥®¡à §®¢ ¢ ç¨á«® | |
;-----------------------------------------------------------------------------+ |
proc string2float lpStr:DWORD, lpResult:DWORD |
; ®ª «ìë¥ ¯¥à¥¬¥ë¥ |
locals |
dot dd ? ; ª § â¥«ì ¤à®¡ãî ç áâì |
exp dd ? ; ª § ⥫ì íªá¯®¥âã |
digit dd ? ; ¨äà |
endl |
pusha |
; ஢¥àª áâப¨ ¢ «¨¤®áâì |
mov [digit],1 |
mov [exp],0 |
mov [dot],0 |
mov esi,[lpStr] |
; ¨ãá ¨«¨ ¯«îá ¬®¦¥â ¡ëâì ⮫쪮 ¢ ç «¥ |
cmp byte [esi],'-' |
je @f |
cmp byte [esi],'+' |
jne .loc_chk_loop |
@@: |
inc esi |
; ®á«¥ § ª ¥ ¬®¦¥â ¡ëâì ã«ï |
cmp byte [esi],0 |
je .loc_chk_error |
.loc_chk_loop: |
; áâப¥ ¤®«¦ë ¡ëâì æ¨äà, íªá¯®¥â ¨ ¥ ¡®«¥¥ ®¤®© â®çª¨ |
lodsb |
or al,al |
jz .loc_chk_complete |
cmp al,'e' |
je .loc_chk_exp |
cmp al,'E' |
je .loc_chk_exp |
cmp al,'.' |
je .loc_chk_dot |
cmp al,'0' |
jb .loc_chk_error |
cmp al,'9' |
ja .loc_chk_error |
jmp .loc_chk_loop |
.loc_chk_dot: |
; ®çª ¢ áâப¥ 㦥 ¥áâì? |
cmp [dot],0 |
; âப ¨¬¥¥â ¥ª®à४âë© ä®à¬ â |
jne .loc_chk_error |
; ªá¯®¥â 㦥 ¥áâì? |
cmp [exp],0 |
; âப ¨¬¥¥â ¥ª®à४âë© ä®à¬ â |
jne .loc_chk_error |
; ª § â¥«ì ¤à®¡ãî ç áâì |
mov [dot],esi |
jmp .loc_chk_loop |
.loc_chk_exp: |
; ªá¯®¥â 㦥 ¥áâì? |
cmp [exp],0 |
; âப ¨¬¥¥â ¥ª®à४âë© ä®à¬ â |
jne .loc_chk_error |
; ª § ⥫ì ç «® íªá¯®¥âë |
mov [exp],esi |
; à §ã ¯®á«¥ íªá¯®¥âë ¥ ¬®¦¥â ¡ëâì ã«ï |
cmp byte [esi],0 |
je .loc_chk_error |
; ®á«¥ íªá¯®¥âë ¬®¦¥â ¡ëâì § ª |
cmp byte [esi],'-' |
je @f |
cmp byte [esi],'+' |
jne .loc_chk_loop |
@@: |
inc esi |
; à §ã ¯®á«¥ ¬¨ãá ¥ ¬®¦¥â ¡ëâì ã«ï |
cmp byte [esi],0 |
je .loc_chk_error |
; ஢¥à¨âì á«¥¤ãî騩 ᨬ¢®« |
jmp .loc_chk_loop |
.loc_chk_error: |
; âப ¥ ï¥âáï ç¨á«®¬ |
mov [digit],0 |
jmp .loc_ret |
.loc_chk_complete: |
; ¨æ¨ «¨§ æ¨ï ᮯà®æ¥áá®à |
finit |
; ç «ì®¥ § 票¥ ç¨á« |
fldz |
; ®¦¨â¥«ì ¨ ¤¥«¨â¥«ì |
mov [digit],10 |
fild dword [digit] |
; ¯¨áì § 票© ¤® § ¯ï⮩ |
mov esi,[lpStr] |
; ç «¥ áâப¨ ¬¨ãá? |
cmp byte [esi],'-' |
je @f |
cmp byte [esi],'+' |
jne .loc_before_dot |
@@: |
inc esi |
; ८¡à §®¢ ¨¥ ç¨á« ¤® § ¯ï⮩ |
.loc_before_dot: |
lodsb |
; ®¥æ áâப¨? |
or al,al |
jz .loc_complete |
cmp al,'.' |
je .loc_complete_before_dot |
cmp al,'e' |
je .loc_exp |
cmp al,'E' |
je .loc_exp |
; ç¥à¥¤ ï æ¨äà |
sub al,'0' |
movzx eax,al |
mov [digit],eax |
; ¯¨á âì |
fild dword [digit] |
fxch st2 |
fmul st0,st1 |
fxch st2 |
fadd st2,st0 |
ffree st0 ; ®ç¨áâ¨âì á⥪ |
fincstp |
jmp .loc_before_dot |
; ८¡à §®¢ ¨¥ ¤à®¡®© ç á⨠ç¨á« |
.loc_complete_before_dot: |
; ஡ ï ç áâì ¥áâì? |
cmp [dot],0 |
je .loc_complete_after_dot |
; ªá¯®¥â ¥áâì? |
cmp [exp],0 |
je @f |
; ª § ⥫ì ç «® íªá¯®¥âë |
mov esi,[exp] |
jmp .loc_start_after_dot |
@@: |
; ç¥ ¯¥à¥¥á⨠㪠§ â¥«ì ª®¥æ áâப¨ |
xor ecx,ecx |
dec ecx |
xor eax,eax |
mov edi,esi |
repne scasb |
mov esi,edi |
.loc_start_after_dot: |
std |
dec esi |
dec esi |
; ஡ ï ç áâì |
fldz |
fxch st1 |
.loc_after_dot: |
lodsb |
; ®¥æ ¤à®¡®© ç áâ¨? |
cmp al,'.' |
je .loc_complete_after_dot |
; ç¥à¥¤ ï æ¨äà |
sub al,'0' |
movzx eax,al |
mov [digit],eax |
; ¯¨á âì |
fild dword [digit] |
fadd st2,st0 |
fxch st2 |
fdiv st0,st1 |
fxch st2 |
ffree st0 ; ®ç¨áâ¨âì á⥪ |
fincstp |
jmp .loc_after_dot |
.loc_complete_after_dot: |
; ¡à®á¨âì ä« £ ¯à ¢«¥¨ï |
cld |
ffree st0 ; ®ç¨áâ¨âì á⥪ |
fincstp |
; «®¦¨âì ¤à®¡ãî ¨ 楫ãî ç áâì |
fadd st1,st0 |
.loc_exp: |
; ªá¯®¥â ¥áâì? |
cmp [exp],0 |
je .loc_complete |
; ®«ãç¨âì § 票¥ íªá¯®¥âë |
xor ecx,ecx |
mov esi,[exp] |
; ç «¥ áâப¨ ¬¨ãá? |
cmp byte [esi],'-' |
je @f |
cmp byte [esi],'+' |
jne .loc_start_exp |
@@: |
inc esi |
.loc_start_exp: |
lodsb |
or al,al |
jz .loc_end_exp |
sub al,'0' |
movzx eax,al |
imul ecx,10 |
add ecx,eax |
jmp .loc_start_exp |
.loc_end_exp: |
or ecx,ecx |
jz .loc_complete |
ffree st0 ; ®ç¨áâ¨âì á⥪ |
fincstp |
mov [digit],10 |
fild dword [digit] |
; ¥«¨âì ¨«¨ 㬮¦ âì? |
mov esi,[exp] |
cmp byte [esi],'-' |
je .loc_exp_divide |
.loc_exp_multiple: |
fmul st1,st0 |
loop .loc_exp_multiple |
jmp .loc_complete |
.loc_exp_divide: |
fdiv st1,st0 |
loop .loc_exp_divide |
.loc_complete: |
ffree st0 ; ®ç¨áâ¨âì á⥪ |
fincstp |
; ç «¥ áâப¨ ¬¨ãá? |
mov esi,[lpStr] |
cmp byte [esi],'-' |
jne @f |
; §¬¥¨âì § ª ç¨á« |
fchs |
@@: |
; ¯¨á âì § 票¥ ¢ ï祩ªã ¯ ¬ï⨠|
mov eax,[lpResult] |
; ᫨ âॡã¥âáï ¯®¢ëè¥ ï â®ç®áâì, â® ¯à¨¥¬¨ª |
; ¤®«¦¥ ¨¬¥âì à §¬¥à QWORD, á«¥¤ãîéãî ª®¬ ¤ã |
; ¤® § ¬¥¨âì fstp qword [eax] |
fstp tword [eax] |
; ᯥ讥 ¯à¥®¡à §®¢ ¨¥ |
mov [digit],1 |
.loc_ret: |
popa |
; ¥§ã«ìâ ⠯८¡à §®¢ ¨ï |
mov eax,[digit] |
ret |
endp |
/programs/develop/libraries/utils/trunk/_ftoa.inc |
---|
0,0 → 1,305 |
;-----------------------------------------------------------------------------+ |
; ãªæ¨ï ¯¥à¥¢®¤ ¢¥é¥á⢥®£® ç¨á« ¢ áâபã [ by ManHunter / PCL ] | |
;-----------------------------------------------------------------------------| |
; à ¬¥âàë: | |
; lpFloat - 㪠§ â¥«ì ¢¥é¥á⢥®¥ ç¨á«® TBYTE | |
; lpResult - 㪠§ ⥫ì áâபã-¯à¨¥¬¨ª १ã«ìâ â | |
;-----------------------------------------------------------------------------+ |
proc FloatToString lpFloat:DWORD, lpResult:DWORD |
; ®ª «ìë¥ ¯¥à¥¬¥ë¥ |
local digits_count:DWORD |
local old_cw:WORD |
local new_cw:WORD |
local saved_float:TBYTE |
local tmp1 rb 11h |
local tmp2 rb 11h |
; ®åà ¨âì ¢á¥ à¥£¨áâàë |
pusha |
; ª § ⥫ì áâபã-¯à¨¥¬¨ª |
mov edi,[lpResult] |
; â® ®«ì? |
lea esi,[lpFloat] |
cmp dword [esi],0 |
jne loc_not_zero |
cmp dword [esi+4],0 |
jne loc_not_zero |
cmp word [esi+8],0 |
jne loc_not_zero |
; ¯¨á âì ¢ áâப㠮«ì |
mov al,'0' |
stosb |
jmp loc_ret |
loc_not_zero: |
; ª®¯¨à®¢ âì ç¨á«® ¢ «®ª «ìãî ¯¥à¥¬¥ãî |
push edi |
mov esi,[lpFloat] |
lea edi,[saved_float] |
movsd |
movsd |
movsw |
pop edi |
; ¨á«® ®âà¨æ ⥫쮥? |
cmp dword [saved_float+6],0 |
jge loc_not_signed |
; ਢ¥á⨠ç¨á«® ª ¡á®«î⮬㠧 票î |
and byte [saved_float+9],7Fh |
; ¯¨á âì ¢ áâப㠬¨ãá |
mov al,'-' |
stosb |
loc_not_signed: |
; ஢¥à¨âì ç¨á«® «¨ç¨¥ ¤à®¡®© ç á⨠¨ |
; ¯®¤áç¨â âì ª®«¨ç¥á⢮ æ¨äà ¢ ¥¬ |
fclex |
; ®åà ¨âì ã¯à ¢«ïî饥 á«®¢® |
fstcw [old_cw] |
; áâ ®¢¨âì ã¯à ¢«ïî饥 á«®¢® |
mov [new_cw],0000001001111111b |
fldcw [new_cw] |
lea esi,[saved_float] |
fld tbyte [esi] |
fld st |
; 뤥«¨âì ¬ â¨ááã ¨ ¯®à冷ª |
fxtract |
fstp st |
fldlg2 |
; ®«ãç¨âì ª®«¨ç¥á⢮ æ¨äà ¢ ç¨á«¥ |
fmulp st1,st |
fistp [digits_count] |
; ᫨ æ¨äà ¡®«ìè¥ 16, â® ç¨á«® ®â®¡à ¦ ¥âáï ¢ |
; ®à¬ «¨§®¢ ®¬ ¢¨¤¥ á ¬ â¨áᮩ ¨ íªá¯®¥â®© |
cmp [digits_count],10h |
jnb loc_not_integer |
; ç¨á« ¥áâì ¤à®¡ ï ç áâì? |
fld st |
frndint |
fcomp st1 |
fstsw ax |
test ah,01000000b |
; , ®â®¡à ¦ âì ç¨á«® á ¤à®¡®© ç áâìî |
jz loc_not_integer |
; ¥«®¥ ç¨á«® ¡¥§ ¤à®¡®© ç á⨠¨ íªá¯®¥âë |
lea eax,[tmp1] |
fbstp [eax] |
; ¥à¥¢¥á⨠BCD-ç¨á«® ¢ áâபã |
push edi |
lea esi,[tmp1+8] |
lea edi,[tmp2] |
mov ecx, 9 |
@@: |
std |
xor eax,eax |
lodsb |
cld |
rol ax,12 |
rol ah,4 |
add ax,'00' |
stosw |
loop @b |
pop edi |
; யãáâ¨âì «¨¤¨àãî騩 ®«ì |
mov eax,11h |
mov ecx,[digits_count] |
sub eax,ecx |
inc ecx |
lea esi,[tmp2+eax] |
cmp byte [esi],'0' |
jne @f |
inc esi |
dec ecx |
@@: |
; ¥à¥¥á⨠¯®«ã祮¥ ç¨á«® ¨§ ¢à¥¬¥®£® ¡ãä¥à |
rep movsb |
jmp loc_clear_stack |
loc_not_integer: |
mov eax,10h |
sub eax,[digits_count] |
; ८¡à §®¢ âì ç¨á«® ¢ 楫®¥ ¤® 16 à §à冷¢ |
mov ecx,eax |
cmp eax,0 |
jge @f |
neg eax |
@@: |
; «ï ç¨á¥« ¡®«ìè¥ 0 ª®à४â¨à®¢ª ®ªà㣫¥¨ï ¢ áâ®à®ã 0 |
mov [new_cw],0000101001111111b |
cmp ecx,0 |
jge @f |
mov [new_cw],0000011001111111b |
@@: |
; áâ ®¢¨âì ã¯à ¢«ïî饥 á«®¢® |
fldcw [new_cw] |
; ®§¢¥á⨠10 ¢ á⥯¥ì ª®«¨ç¥á⢠æ¨äà |
fld [float2] |
fld [float2] |
@@: |
fmul st,st1 |
dec eax |
cmp eax,1 |
ja @b |
; ®ç¨áâ¨âì á⥪ |
fxch st1 |
fstp st |
; ᫨ ç¨á«® ¬¥ìè¥ 0, ⮠㬮¦¨âì, ¨ ç¥ à §¤¥«¨âì |
cmp ecx,0 |
jge @f |
fdivp st1,st |
jmp loc_rounded |
@@: |
fmulp st1,st |
loc_rounded: |
; ®«ã祮¥ § 票¥ ¬¥ìè¥ 1.0e16 ? |
fcom [float1] |
fstsw ax |
test ah,1 |
jz @f |
fmul [float2] |
dec [digits_count] |
@@: |
; ¥«®¥ ç¨á«® ¡¥§ ¤à®¡®© ç á⨠¨ íªá¯®¥âë |
lea eax,[tmp1] |
fbstp [eax] |
; ¥à¥¢¥á⨠BCD-ç¨á«® ¢ áâபã |
push edi |
lea esi,[tmp1+8] |
lea edi,[tmp2] |
mov ecx, 9 |
@@: |
std |
xor eax,eax |
lodsb |
cld |
rol ax,12 |
rol ah,4 |
add ax,'00' |
stosw |
loop @b |
pop edi |
; ¨á«ã âॡã¥âáï ¬ â¨áá ¨ íªá¯®¥â ? |
lea esi,[tmp2+1] |
mov ecx,[digits_count] |
cmp ecx,-0Fh |
jl loc_mantiss_and_exponent |
cmp ecx,10h |
jg loc_mantiss_and_exponent |
; ¯®«¨âì ¤à®¡ãî ç áâì ç¨á« |
inc ecx |
cmp ecx,0 |
jg @f |
mov ax,'0.' |
stosw |
neg ecx |
mov al,'0' |
rep stosb |
mov ecx,10h |
jmp loc_fraction_filled |
@@: |
rep movsb |
mov al,'.' |
stosb |
mov ecx,10h |
sub ecx,[digits_count] |
loc_fraction_filled: |
rep movsb |
jmp @f |
loc_clear_fraction: |
; ¤ «¨âì § ¢¥àè î騥 㫨 ¤à®¡®© ç á⨠|
dec edi |
@@: |
cmp byte [edi-1],'0' |
jz loc_clear_fraction |
cmp byte [edi-1],'.' |
jnz @f |
dec edi |
@@: |
jmp loc_clear_stack |
loc_mantiss_and_exponent: |
; ஡ ï ç áâì ¬ â¨ááë |
movsb |
mov al,'.' |
stosb |
movsd |
movsd |
movsw |
; ¤ «¨âì § ¢¥àè î騥 㫨 ¤à®¡®© ç á⨠|
@@: |
cmp byte [edi-1],'0' |
jne @f |
cmp byte [edi-2],'.' |
je @f |
dec edi |
jmp @b |
@@: |
; ¨¬¢®« ¨ § ª íªá¯®¥âë |
mov al,'e' |
stosb |
mov al,'+' |
mov ebx,[digits_count] |
cmp ebx, 0 |
jge @f |
mov al,'-' |
neg ebx |
@@: |
stosb |
; 票¥ íªá¯®¥âë |
mov eax,ebx |
mov ecx,10 |
mov ebx,4 |
@@: |
dec ebx |
xor edx,edx |
div ecx |
add dl,'0' |
mov [tmp1+ebx],dl |
or ebx,ebx |
jnz @b |
; யãáâ¨âì «¨¤¨àãî騥 㫨 íªá¯®¥âë |
mov ecx,4 |
lea esi,[tmp1] |
@@: |
lodsb |
cmp al,'0' |
jne @f |
dec ecx |
jmp @b |
@@: |
dec esi |
rep movsb |
loc_clear_stack: |
; ®ááâ ®¢¨âì ã¯à ¢«ïî饥 á«®¢® |
fldcw [old_cw] |
loc_ret: |
; ª®ç ¨¥ áâப¨ |
mov al,0 |
stosb |
; ®ááâ ®¢¨âì ¢á¥ à¥£¨áâàë |
popa |
ret |
float1 dq 1.0e16 |
float2 dq 10.0 |
endp |
/programs/develop/libraries/utils/trunk/_rand.inc |
---|
0,0 → 1,34 |
;-----------------------------------------------------------------------------+ |
; ãªæ¨ï £¥¥à 樨 á«ãç ©®£® ç¨á« ¢ ¤¨ ¯®§®¥ 0..99999 | |
;-----------------------------------------------------------------------------+ |
; ¢ë室¥ : eax - á«ãç ©®¥ ç¨á«® | |
;-----------------------------------------------------------------------------+ |
_random: |
push edx ecx ebx |
mov eax,ebx |
or eax,eax |
jnz @f |
rdtsc |
xor eax,edx |
mov ebx,eax |
@@: |
xor edx,edx |
mov ecx,127773 |
div ecx |
mov ecx,eax |
mov eax,16807 |
mul edx |
mov edx,ecx |
mov ecx,eax |
mov eax,2836 |
mul edx |
sub ecx,eax |
xor edx,edx |
mov eax,ecx |
mov ebx,ecx |
mov ecx,100000 |
div ecx |
mov eax,edx |
pop ebx ecx edx |
ret |
;-> |
/programs/develop/libraries/utils/trunk/build.bat |
---|
0,0 → 1,2 |
@fasm -m 65536 utils.asm utils.obj |
@kpack utils.obj |
/programs/develop/libraries/utils/trunk/example/demo.asm |
---|
0,0 → 1,88 |
;-----------------------------------------------------------------------------; |
; =[ INIT ]= ; |
;-----------------------------------------------------------------------------; |
;; START: |
call utils_init |
;-----------------------------------------------------------------------------; |
; =[ USE ]= ; |
;-----------------------------------------------------------------------------; |
push fvalue ; value dt (XXXXX.XXXXX) |
push fstring ; ASCIIZ string (rb 64) |
call [_ftoa] ; convert |
push fstring ; ASCIIZ string ('XXXX.XXXXXX',0) |
push fvalue ; value dt (?) |
call [_atof] ; EAX: 0 - error, 1 - convert |
call [_random] ; EAX: random digit [0...99999] |
;-----------------------------------------------------------------------------; |
; =[ LOAD ]= ; |
;-----------------------------------------------------------------------------; |
utils_init: |
mov eax, 68 ; load DLL |
mov ebx, 19 ; |
mov ecx, utils_lib |
int 0x40 |
test eax, eax |
jz utils_exit |
mov edx, eax ; initialize import |
mov esi, utils_import ; import list |
utils_loop: |
lodsd |
test eax, eax |
jz utils_done |
push edx |
utils_find: |
mov ebx, [edx] |
test ebx, ebx |
jz utils_exit ;import_not_found |
push eax |
@@: |
mov cl, [eax] |
cmp cl, [ebx] |
jnz utils_next |
test cl, cl |
jz utils_found |
inc eax |
inc ebx |
jmp @b |
utils_next: |
pop eax |
add edx, 8 |
jmp utils_find |
utils_found: |
pop eax |
mov eax, [edx+4] |
mov [esi-4], eax |
pop edx |
jmp utils_loop |
utils_done: |
ret |
utils_exit: |
mov eax, -1 |
int 0x40 |
;-----------------------------------------------------------------------------; |
; =[ DATA ]= ; |
;-----------------------------------------------------------------------------; |
fvalue dt -502556.267e600 ; dt ? |
fstring db rb 100 ; '-15.246789',0 |
utils_lib db '/sys/lib/utils.obj',0 ; path |
align 4 |
utils_import: |
_ftoa dd ftoa |
_atof dd atof |
_random dd random |
dd 0 |
ftoa db 'ftoa',0 |
atof db 'atof',0 |
random db 'random',0 |
;-----------------------------------------------------------------------------; |
/programs/develop/libraries/utils/trunk/example |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |
/programs/develop/libraries/utils/trunk/utils.asm |
---|
0,0 → 1,64 |
;-----------------------------------------------------------------------------+ |
; Library "utils" (c) Sergei Steshin (Akyltist) | |
;-----------------------------------------------------------------------------+ |
; Charset:DOS-866 Font:Courier New Size:9pt | |
; compiler: FASM 1.69.31 | |
; version: 0.1.0 | |
; last update: 31/03/2014 | |
; e-mail: dr.steshin@gmail.com | |
; license: BSD | |
;-----------------------------------------------------------------------------+ |
format MS COFF |
public EXPORTS |
section '.flat' code readable writable align 16 |
include '../../../../proc32.inc' |
include '_ftoa.inc' |
include '_atof.inc' |
include '_rand.inc' |
;-----------------------------------------------------------------------------+ |
; float to ascii string | |
;-----------------------------------------------------------------------------+ |
ftoa: ; |
mov ebx, dword [esp+4] ; out string |
mov eax, dword [esp+8] ; in value |
stdcall FloatToString,eax,ebx ; |
ret 8 ; |
;-----------------------------------------------------------------------------+ |
; ascii string to float | |
;-----------------------------------------------------------------------------+ |
atof: ; |
mov ebx, dword [esp+4] ; out <- value |
mov eax, dword [esp+8] ; in -> string |
stdcall string2float,eax,ebx ; |
ret 8 ; |
;-----------------------------------------------------------------------------+ |
; returns a random integer in the range [ 0...99999 ] | |
;-----------------------------------------------------------------------------+ |
random: ; |
call _random ; out <- eax random |
ret ; |
;=============================================================================; |
align 16 |
EXPORTS: |
dd szFtoa , ftoa |
dd szAtof , atof |
dd szRandom , random |
dd 0 , 0 |
szFtoa db 'ftoa' ,0 |
szAtof db 'atof' ,0 |
szRandom db 'random' ,0 |
section '.data' data readable writable align 16 |
/programs/develop/libraries/utils/trunk |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |
/programs/develop/libraries/utils |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |