0xF0000000 отрицательный или положительный? - PullRequest
0 голосов
/ 12 июля 2011

Я работаю со сборкой ARM и пытаюсь (снова) понять таблицу переходов.Связанное изображение представляет собой запись таблицы переходов из дампа прошивки canon rebel t1i.В этом случае R0 (я называю его arg1) - это некоторое число, которое> = 0x10000091 (как объяснено на прилагаемом рисунке).

Я пытаюсь выяснить, как здесь используется 0xF0000000.Единственное, о чем я могу думать, это то, что это должно быть какое-то отрицательное число ... так как это единственный способ, которым я могу здесь разобраться.То, как я работал в комментариях, предполагало, что 0xF0000000 = -268435445, но, как я объяснил, похоже, это не работает ...

Любая помощь очень ценится !!

фрагмент кода

Ответы [ 4 ]

6 голосов
/ 12 июля 2011

Неважно, положительный или отрицательный.

Если вы перейдете к возможным значениям R0, вы получите:

R0          ADD...      SUB...
10000091 => 00000091 => 00000000 => branch to loc_FF1CC924
10000092 => 00000092 => 00000001 => branch to loc_FF1CC928
10000093 => 00000093 => 00000002 => branch to loc_FF1CC92C
10000094 => 00000094 => 00000003 => branch to loc_FF1CC930
10000095 => 00000095 => 00000004 => branch to loc_FF1CC934

anything else will fall through  => branch to loc_FF1CFAEC
3 голосов
/ 12 июля 2011

Может быть как положительным, так и отрицательным; Это зависит от контекста. Для случаев, когда предполагается, что значение является 4-байтовым целым числом со знаком, оно равно -268,435,456. Для случаев, когда предполагается, что значение представляет собой 4-байтовое целое число без знака (например, для адресов), оно равно 4 026 531 840.

Вот расчеты Google для отрицательного значения .

Вот расчеты Google для положительного значения .

1 голос
/ 12 июля 2011

0xF0000000 это просто символ. Он может представлять что угодно.

Как шестнадцатеричное представление 32-разрядного числа, оно может быть как положительным, так и отрицательным, в зависимости от того, является число подписанным или без знака.

В качестве шестнадцатеричного представления 32-разрядного числа со знаком, дополненного знаком, оно отрицательно.

0 голосов
/ 12 июля 2011

Негатив, я думаю. Самый левый бит будет битом знака. («Я думаю», потому что мне нужно проверить использование ARM для представления, но вряд ли что-то еще использует другие возможности.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...