Я понимаю, что прыжок в сборке в основном происходит из одного места в другое.
Скажем, у нас есть
804828f: 74 05 je XXXXXXX
8048291: e8 1e 00 00 00 call 80482b4
Согласно книге, все, что я действительно делаю, это добавление 0x05до 8048291, что дает 8048291, но я смущен тем, что просит команда здесь.Согласно книге, операнд je is je равен / 0
Тогда у нас сложный вопрос, который мне действительно трудно обернуть.
8048357: 72 e7 jb XXXXXXXX
8048359: c6 05 10 a0 04 08 01 movb $0x1,0x804a010
Согласноэто, поскольку e7 является 1-битным представлением -25, jb переходит на адрес 8048340.
То.,,Не имеет никакого смысла для меня.,,СОВСЕМ.С одной стороны, если что-то подписано и 1 байт не должен быть максимальным значением просто 2?Во-вторых, если что-то -25, то почему источник 8048340?Как мы пошли с 59 до 40, если не было вовлечено 19?
Что я думаю, ответ:
Я думал об этом на секунду,но чтобы получить 19 из гекса 25, я должен разделить 16 на 25, взять остаток от 9, а затем добавить 9 к 10, что означает 1 в этом случае?
Честно говоря, я заблудился из-за подписанного однобайтового значения.