Сейчас на форуме: ==DJ==[ZLO], Magister Yoda, Rio (+6 невидимых)

 eXeL@B —› Основной форум —› 6 байтный флоат пойнт -> String
Посл.ответ Сообщение

Ранг: 0.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 01 марта 2005 22:49
· Личное сообщение · #1

Вот потребовалось замутить представление плавуЩей точки в стоку... может кто видел алго стандартное? А то самому жуть как не охото писать




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 01 марта 2005 23:11
· Личное сообщение · #2

FloatToStr разве нету? Или тебе на асме?

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!




Ранг: 210.5 (наставник), 2thx
Активность: 0.140
Статус: Участник

Создано: 02 марта 2005 00:22
· Личное сообщение · #3

Если на асме, то на Fasm-e я делал так: сначала браз челую часть, писал его как строку, ставил точку и писал дробьную часть. А вот как я брал целую часть:
; Returns the integer part of a float number
;
; -> st0  float argument
; <- st0  float result

$sproc st0int

	sub	esp, 4
	fstcw	[esp]	  ; save
	fstcw	[esp + 2] ; scratch
	fwait
	and	word [esp + 2], 1111001111111111b ; 0xF3FF ; clear round mode flags
	or	word [esp + 2], 0000110000000000b ; 0xFCFF ; trunc toward zero
	fldcw	[esp + 2]
	frndint
	fwait
	fldcw	[esp]
    .return:
	add	esp, 4
	ret
$endp
А вот как я брал дробьную часть:
; Returns the fractional part of a float number
;
; -> st0  float argument
; <- st0  float result

$sproc st0frac

	sub	esp, 4
	fld	st0
	fstcw	[esp]	  ; save
	fstcw	[esp + 2] ; scratch
	fwait
	and	word [esp + 2], 1111001111111111b ; 0xF3FF ; clear round mode flags
	or	word [esp + 2], 0000110000000000b ; 0xFCFF ; trunc toward zero
	fldcw	[esp + 2]
	frndint
	fwait
	fldcw	[esp]
	fsubp
    .return:
	add	esp, 4
	ret
$endp




Ранг: 0.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 02 марта 2005 01:51
· Личное сообщение · #4

Я как раз думал, что придётся реализовать что-то типо этого, спасибо большое =)
GPcH
Самый лучший язык... это асм =) Меня даже что-то контачит интерфейс писать на другом языке...



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 02 марта 2005 04:13
· Личное сообщение · #5

Можно поискать варианты по форуму wasm'а, а также в папке
masm32\fpulib



Ранг: 0.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 02 марта 2005 06:58
· Личное сообщение · #6

Там наверное либ файл, я на FASM'e пишу...



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 02 марта 2005 07:13
· Личное сообщение · #7

вобще-то там исходники, а писать можешь на чем угодно хоть на nasm'е ;)



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 02 марта 2005 14:04
· Личное сообщение · #8

Вот ещё кое что с wasm'а.


b680_fpu_example_src.zip

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 0.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 02 марта 2005 18:03
· Личное сообщение · #9

Asterix
Нашёл, спасибо за наводку =)



Ранг: 0.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 02 марта 2005 18:07
· Личное сообщение · #10

AlexZ
Там всё класно... только без E+1234



Ранг: 0.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 03 марта 2005 00:58
· Личное сообщение · #11

Вся проблема в том, что число то у меня 48 битовое , 6 байт... fword\pword маму его... как его распознять так и не всосал...



Ранг: 0.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 03 марта 2005 04:46 · Поправил: RU_Ban0K
· Личное сообщение · #12

Короче я поступил "сильно по тупому", я просто расширил 48 битовое до 80 битового ( хватило бы и 64 ), а далее взял код для преобразования с васма... проблема теперь в том что есть некоторое приближение... пока не знаю на сколько оно критично, так как я буду после некоторых действий делать обратное преобразование.

/после четырёх часов пыхтения/ Всё, дошло...


 eXeL@B —› Основной форум —› 6 байтный флоат пойнт -> String
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати