Сейчас на форуме: _MBK_ (+7 невидимых)

 eXeL@B —› Основной форум —› Inqsoft Sign 0f Misery глюк проераммы или я туплю
Посл.ответ Сообщение

Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 октября 2010 22:19
· Личное сообщение · #1

Подскажите, может кто сталкивался с подобным.

В версии 2.7(тоже-самое и в ранних версиях)
нужно вычесть из четырех байтного 004029f0 четырех байтное 0137e204, если произвести вычитание в калькуляторе, то ответ FF0847EC.
В программе команда вычитания блока двоичных данных отсутствует, поэтому выполняю следующие команды:

перевожу вышеуказанные блоки в десятичную систему счисления
произвожу вычитание
перевожу результат в блок двоичных данных

В результате FE0847EC, соответственно сравнивая ответ с калькулятором- разница на 01000000 (в калькуляторе два старших байта FF, а в программе FE).

Что я делаю не так и как можно решить данную проблему??




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 20 октября 2010 22:23
· Личное сообщение · #2

двоичную арифметику для начала освойте



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 октября 2010 22:35
· Личное сообщение · #3

вроде знаю, а что?




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 20 октября 2010 22:44
· Личное сообщение · #4

какие тогда могут быть сомнения?
пересчитайте вручную на белом листе бумаги



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 20 октября 2010 22:45
· Личное сообщение · #5

reversecode
Он про баг в s0m говорит.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 20 октября 2010 22:49
· Личное сообщение · #6

нет
он сомнивается кто из двух программ и него самого прав



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 20 октября 2010 22:54
· Личное сообщение · #7

А что делаете вы в данный момент?



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 октября 2010 23:15
· Личное сообщение · #8

reversecode
не надо писать ересь.

Меня интересует как решить проблемму не переписывая 5 тыс строк.
В сом есть масса глюков и ограничений, но их благополучно обхожу, а в данной ситуации значения динамически меняются и немогу указать явное значение 014029f0 дабы обойти данную проблему.
Меня интересует решение вопроса и совет, а не глупые бесмысленные посты.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 20 октября 2010 23:32 · Поправил: PE_Kill
· Личное сообщение · #9

Явно баг в том, что s0m не умеет вычитать по модулю. Надо подумать как обойти.

Подумал. Попробуй такой вариант:
Переводишь всё в десятичную систему.
Отнимаешь от числа 0137e204 число 004029f0.
Отнимаешь от 0 то, что получилось выше.
Переводишь результат в блок двоичных данных.

-----
Yann Tiersen best and do not fuck





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 20 октября 2010 23:37
· Личное сообщение · #10

vlad312131
ересь несете вы
с самого начала еще в топике темы
или я туплю
если уверены что глюк программы нужно с того и начинать
- программа глючит как исправить
а вы начинаете свои рассуждения
кто из трех, программа, калькулятор или вы - глючит
я вам и предложил, пересчитат на бумаге в ручную - что бы точно быть увереным кто их вас троих не голючит

int
для начала я пытаюсь разобратся что хочет ТС
телепатическими способностями для угадывания желания - я не обладаю




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 20 октября 2010 23:44
· Личное сообщение · #11

Еще подумал.

Переводишь всё в десятичную систему.
Отнимаешь от числа 4294967295 число 0137e204 (<-в десятичной только системе)
Отнимаешь от полученного числа 004029f0 (<-в десятичной только системе)
Прибавляешь единичку
Переводишь результат в блок двоичных данных.

-----
Yann Tiersen best and do not fuck





Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 20 октября 2010 23:50
· Личное сообщение · #12

а чо не сделать так?
Записать целое число в переменную 0 4205040
Записать целое число в переменную 1 20439556
Вычесть вторую переменную из первой 0 1

-----
Лучше быть одиноким, но свободным © $me




Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 октября 2010 00:01
· Личное сообщение · #13

reversecode
я нерассуждал кто из трех программ глючит.

Я интересовался что в программе я делаю нетак (например неправильно использую команды прграммы , учитывая ее ограничения)

А начинать топик с уверенности, что глючит программа- слишком самонадеяно, я привык искать проблему в правильном использование функцирнала проги а пото грешить на нее.
Фраза "или я туплю " относилась к возможному моему непониманию реализации и использования комманд программы.
Вам лучше не отвечать на вопроссы, так-как у вас отсутсвует элементарная логика и завышенна самооценка.


PE-Kill, BoRoV
спасибо попробую, но значения динамичны и зачастую разица не 01000000 а например 00000100 или 00100000.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 21 октября 2010 00:06
· Личное сообщение · #14

vlad312131
Явно не калькулятор))



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 октября 2010 01:24 · Поправил: vlad312131
· Личное сообщение · #15

PE-Kill
Подумал. Попробуй такой вариант:
Переводишь всё в десятичную систему.
Отнимаешь от числа 0137e204 число 004029f0.
Отнимаешь от 0 то, что получилось выше.
Переводишь результат в блок двоичных данных.


неподходит при вычетании чисел получаем E7B814 должно F7B814

Переводишь всё в десятичную систему.
Отнимаешь от числа 4294967295 число 0137e204 (<-в десятичной только системе)
Отнимаешь от полученного числа 004029f0 (<-в десятичной только системе)
Прибавляешь единичку
Переводишь результат в блок двоичных данных.


неподходит


BoRoV
а чо не сделать так?
Записать целое число в переменную 0 4205040
Записать целое число в переменную 1 20439556
Вычесть вторую переменную из первой 0 1


может я что-то упустил, но в первом посте этот метод и использован, только я не указываю явное значение в десятичном, потому, как получаю значение в шестнадцетиричном формате и перевожу в десятичный- неподходит


как мне кажется в случае если одно из чисел равно или больше 01000000(16) то сом к старшему байту вычетаемому большему чем 0 прибавляет 1
пример
01100000(16) вычетаем 00100000(16) в результате должно быть 01000000(16) а получится 0F00000(16) так-как вычтется 00200000(16)

в итоге у меня на примере 4029f0-137E204- сом вычетает 237E204, вот и получаем старший байт FE вместо FF,
если вычетать 137E204 - 4029f0 - сом вычитает 5029f0, также получаем старший байт E7 вместо F7


Как это обойти?(кажется никак?)




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 21 октября 2010 03:34 · Поправил: PE_Kill
· Личное сообщение · #16

А проверить там нельзя что число хреновое и к результату прибавить 01000000 ?

-----
Yann Tiersen best and do not fuck





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 21 октября 2010 08:34
· Личное сообщение · #17

vlad312131
vlad312131 пишет:
004029f0 четырех байтное 0137e204

Про то что число получается отрицательное надеюсь не забыл?
при получении отрицательного числа срабатывает флаг СF,
vlad312131 пишет:
неподходит при вычетании чисел получаем E7B814 должно F7B814

потом добавь комманду

not E7B814
inc E7B814

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 21 октября 2010 10:04
· Личное сообщение · #18

А что s0m поддерживает асмовые команды? Так тогда всё намного проще.

-----
Yann Tiersen best and do not fuck




Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

Создано: 21 октября 2010 12:09 · Поправил: SWR
· Личное сообщение · #19

Разбей на два блока (по 2 байта) вичти оба , а потом подвравь старший блок на единицу если было переполнение в отрицательную сторону.
Ну как в старом досе когда бало всего 2 байта в инте.

===addd==========
S0m вроде нет асма но у этих двух инструкций должен быть эквивалент (иначе плохая прога)



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 октября 2010 12:10
· Личное сообщение · #20

сом не работает с командами асма,

А проверить число средствами сома - проблимотично в следствии ограничений сома, я и так часть переписал на асме, а если я вычисления адреса jmp буду переписывать на асм то тогда и все остальное стоит переписать и вообще сом ненужен.
Хочется решить проблему с спомощи сом.




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 21 октября 2010 12:14
· Личное сообщение · #21

тогда остаётся только одно, учи какой-то ЯП и пиши всё сам, а не юзай конструкторы

-----
Лучше быть одиноким, но свободным © $me





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 21 октября 2010 13:39 · Поправил: ClockMan
· Личное сообщение · #22

vlad312131
Cчас зашёл на сайт s0m.narod.ru/ там автор пишет что InqSoft Sign 0f Misery устарел
и пишет новую программу InqSoft Neo Sign 0f Misery пробуй её темболее там он добавил кучу комманд.

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.





Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 21 октября 2010 13:44
· Личное сообщение · #23

ClockMan пишет:
пишет новую программу InqSoft Neo Sign 0f Misery

эй тоже сто лет в обед )

-----
Лучше быть одиноким, но свободным © $me





Ранг: 233.1 (наставник), 30thx
Активность: 0.210
Статус: Участник

Создано: 21 октября 2010 17:23
· Личное сообщение · #24

Ещё можно попробовать AutoIt. Этот скриптовый язык тоже ориентирован в сторону автоматизации рутинных задач, на на много гибче.

-----
AutoIt




Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 октября 2010 22:16
· Личное сообщение · #25

Спасибо за советы.

Neo Sign 0f Misery- действительно обладает мощным по сравнению с сом функционалом и постоянно обновляется (последняя от 12.6.2010), но конвертора из старой версии в нее нет. В предыдущих версиях neo небыло функций записи по адресу динамическе меняющемуся, а в соме с помощью трех команд реализуемо, именно этим и был обусловлен выбор сом вместо neo, а теперь переписывать все на нео или куда еще -трудоемко(4 скрипта по 5-6 тыс строк и несколько тысяч строк асма напрямую заточенные под особенности сом)

AutoIt - не пишет в память выбранного прцесса, не читает и в ней не возможно вычеслять адреса переходов, соответственно сделать инжект кода в процесс невозможно.( а может я просто незнаю? поправте если не прав)




Ранг: 233.1 (наставник), 30thx
Активность: 0.210
Статус: Участник

Создано: 22 октября 2010 07:46
· Личное сообщение · #26

Многое, что не умеет автоит изначально реализуется с помощю UDF (User Defined Function)
Для памяти существует NomadMemory.au3 (сам не пользовался, не знаю подойдёт ли)
Но раз уже столько написано на S0M, геморно всё переписывать.

-----
AutoIt



 eXeL@B —› Основной форум —› Inqsoft Sign 0f Misery глюк проераммы или я туплю
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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