#1
|
|||
|
|||
WinCE Floating-Point operators - HELP
Hi All,
A have a function in Windows CE with some floating point calculations over an elapsed seconds value. Unfortunatally I don't understand the second part of this function. So I would like to ask your help to decode it. This is the fcuntion in IDA: Code:
dert:00001638 sub_1638 dert:00001638 ; DATA XREF: dert:00006008↓o dert:00001638 STMFD SP!, {R4,LR} dert:0000163C MOV R0, #0 dert:00001640 BL getElapsedSeconds ; Get elapsed time in seconds dert:00001644 LDR R3, =_i64tos dert:00001648 LDR R3, [R3] dert:0000164C MOV LR, PC dert:00001650 BX R3 ; _i64tos(secs) //convert eleapsed secs to Single Precision float dert:00001654 LDR R3, =_divs dert:00001658 LDR R1, =2592000.0 ; 30 days in seconds dert:0000165C LDR R3, [R3] dert:00001660 MOV LR, PC dert:00001664 BX R3 ; _divs(secs/30 days) dert:00001668 LDR R3, =_stod dert:0000166C LDR R3, [R3] dert:00001670 MOV LR, PC dert:00001674 BX R3 ; Convert the result tp Double precision float dert:00001678 LDR LR, =_subd dert:0000167C LDR R2, =0xEB851EB8 ; Not used (float: -3.2186e26) dert:00001680 LDR R3, =0x3FDEB851 ; Not used (1.74) dert:00001684 LDR R4, [LR] dert:00001688 MOV LR, PC ; subd => Double precision substraction, what are the operands? dert:0000168C BX R4 dert:00001690 LDR R3, =_dtoi dert:00001694 LDR R3, [R3] dert:00001698 MOV LR, PC dert:0000169C BX R3 ; _dtoi() Convert double back to int dert:000016A0 LDMFD SP!, {R4,LR} dert:000016A4 BX LR ; return The C code generated by Hex-ray is the following: Code:
int sub_1638() { signed int v0; // r0 int v1; // r0 int v2; // r0 int v3; // r0 int v4; // r0 v0 = getElapsedSeconds(0); v1 = i64tos(v0); v2 = divs(v1, 0x4A1E3400); v3 = stod(v2); v4 = subd(v3); return dtoi(v4); } https://msdn.microsoft.com/en-us/lib...edded.70).aspx So everybody can help me to decode the floating point operations over the elapsed seconds? Thanks and regards, leader |
Tags |
windows ce floating point |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
WinCE dll unpacking | leader | General Discussion | 2 | 01-20-2018 05:16 |
Runtime Error R6002 - Floating point not loaded after unpacking | TempoMat | General Discussion | 14 | 11-02-2013 14:05 |
Runtime Error R6002 - Floating point not loaded | MrGneissGuy's | General Discussion | 1 | 09-14-2009 03:08 |
reverse engineering floating point code | jonwil | General Discussion | 3 | 11-04-2008 09:08 |