Сейчас на форуме: _MBK_ (+6 невидимых) |
eXeL@B —› Основной форум —› Замена int на longword (pascal) без последствий. |
Посл.ответ | Сообщение |
|
Создано: 16 апреля 2007 15:26 · Личное сообщение · #1 |
|
Создано: 16 апреля 2007 16:07 · Личное сообщение · #2 |
|
Создано: 16 апреля 2007 17:12 · Личное сообщение · #3 |
|
Создано: 16 апреля 2007 18:03 · Личное сообщение · #4 |
|
Создано: 16 апреля 2007 19:02 · Личное сообщение · #5 SLV пишет: оба не шарите... :P integer == word == 16 bit [signed] longword == dword == 32 bit [unsgned]... ты не шаришь... SLV пишет: integer == word == 16 bit [signed] longword == dword == 32 bit [unsgned]... Зависит от компилятора... iddqd пишет: Т.е. signed 32-bit на unsigned 32-bit. Вопрос был именно в этом. По теме: смотря что за переменная, то есть Signed тип минус старший бит, соответственно интервал примерно -2 млрд до +2 млдр, а вот Unsigned от 0 до 4 млрд. |
|
Создано: 17 апреля 2007 07:39 · Личное сообщение · #6 |
|
Создано: 17 апреля 2007 07:41 · Личное сообщение · #7 |
|
Создано: 17 апреля 2007 08:40 · Личное сообщение · #8 Как минимум нужно определиться наверняка с размером. SLV прав. Для языка из названия топика обычно тип int - это 16 бит. iddqd пишет: Возможно ли это как-то сделать без последствий для программы? На этот вопрос можно смело ответить – ДА. Как и на любой вопрос из серии изменить что-то в чём-то. Другой вопрос, что для этого придётся сделать. А вот тут нужна конкретика. ----- Всем привет, я вернулся |
|
Создано: 17 апреля 2007 08:45 · Поправил: Rush · Личное сообщение · #9 iddqd пишет: Так понимаю, что ответ: НЕЛЬЗЯ без последствий. Если у кого-то другое мнение - пишите Ты бы написал - за что, хоть, отвечает эта переменная (не от балды же ты ее поменять хочешь). Сам подумай, если переменная может принимать отрицательные значения, то МЕНЯТЬ НЕЛЬЗЯ. Если только положительные, то скорее всего можно, т.к. врядли переменная приобретает миллиардные значения. Bitfry пишет: Как минимум нужно определиться наверняка с размером. SLV прав. Для языка из названия топика обычно тип int - это 16 бит. Ребята, что вы курите... Язык в названии - Pascal 32bit - ЭТО НЕ ТУРБО ПАСКАЛЬ И ЕГО 16 БИТ. По умолчанию в VCL тип integer 32bit. |
|
Создано: 17 апреля 2007 08:53 · Личное сообщение · #10 |
|
Создано: 17 апреля 2007 11:07 · Личное сообщение · #11 Я поясню что это за переменная и зачем. Как я уже говорила, это игра. Игра довольно старая и не далекие создатели сделали так, что деньги это тип int (signed 32), т.е. деньги могут быть только до 2,1 млрд. Присутствует такой баг, что если взять денег больше, чем влазит в int, то они уходят в минус. Для этого и хочу сделать usigned 32, чтоб хотя бы в два раза увеличить сумму денег. |
|
Создано: 17 апреля 2007 11:14 · Личное сообщение · #12 |
|
Создано: 17 апреля 2007 11:22 · Личное сообщение · #13 |
|
Создано: 17 апреля 2007 11:45 · Личное сообщение · #14 |
|
Создано: 17 апреля 2007 11:59 · Личное сообщение · #15 |
|
Создано: 17 апреля 2007 12:23 · Личное сообщение · #16 |
|
Создано: 17 апреля 2007 12:32 · Личное сообщение · #17 |
|
Создано: 17 апреля 2007 12:47 · Личное сообщение · #18 |
|
Создано: 17 апреля 2007 13:34 · Личное сообщение · #19 |
|
Создано: 17 апреля 2007 13:34 · Поправил: Icelot · Личное сообщение · #20 AlexZ пишет: В любом случае, без последствий заменить нельзя. Мне кажется, что можно.. Число становиться отрицательным, т.к. включается первый бит - знаковый. Если программа будет считать, что по этому адресу лежит беззнаковая переменная, то всё будет ок имхо ;) А как это сделать... PS Кстати а при чем здесь Pascal? ----- radio uno in ibisa ... |
|
Создано: 17 апреля 2007 14:06 · Личное сообщение · #21 Icelot пишет: Мне кажется, что можно.. Число становиться отрицательным, т.к. включается первый бит - знаковый. Если программа будет считать, что по этому адресу лежит беззнаковая переменная, то всё будет ок имхо ;) По умолчанию программа считает что integer знаковая переменная. Кстати, непонятно как автор это определил. И вообще обсуждаем какой-то офф. В F1 четко написано что такое integer и как мериется. ----- Я медленно снимаю с неё UPX... *FF_User* |
|
Создано: 17 апреля 2007 14:15 · Поправил: cppasm · Личное сообщение · #22 Icelot пишет: что по этому адресу лежит беззнаковая переменная, то всё будет ок имхо ;) А как это сделать... А для этого надо пропатчить во всём бинарнике команды работающие с этой переменной со знаковых на их беззнаковые аналоги. SAR на SHR, IMUL на MUL и так далее... А что-то мне подсказывает что команд таких будет не мало... Так что ИМХО |
|
Создано: 18 апреля 2007 21:27 · Личное сообщение · #23 cppasm пишет: А что-то мне подсказывает что команд таких будет не мало... Но ведь это возможно =). Icelot пишет: Число становиться отрицательным, т.к. включается первый бит - знаковый. Старший бит. Биты принято нумеровать от нуля справа на лево. Icelot пишет: Если программа будет считать, что по этому адресу лежит беззнаковая переменная, то всё будет ок имхо А чтоб она так считала, нужно исправлять команды работающие со знаком на беззнаковые. К списку cppasm, прежде всего стоит добавить переходы =). Обсуждение Int'a далее не приветствуется, раз прога 32-битная, вопрос снят. Утром гляну что там. ----- Всем привет, я вернулся |
|
Создано: 20 апреля 2007 02:49 · Личное сообщение · #24 |
|
Создано: 20 апреля 2007 05:46 · Личное сообщение · #25 sen, кстати, не знал. Спасибо за совет. Глянул. Во-первых это VS С++. Там, похоже, всё так организовано, что та самая функция вывода, про которую сказал Sen, одинаково обрабатывает все GM_Report. Если просто заменить %d на %u, то все параметры игры станут беззнаковыми. Не уверен, что это будет здорово. =/ ----- Всем привет, я вернулся |
eXeL@B —› Основной форум —› Замена int на longword (pascal) без последствий. |