cap:
.LFB0:
movl %edi, %eax # взял n
subl %esi, %eax # вычел из него n_max
sarl $31, %eax # сдвинул арифметически результат
andl %edi, %eax # побитово умножил
ret
Это довольно просто. Добавить в команды компиляции/линковки ключ -g.
Выбрать gdb for target. Запустить gdb --args application parameters. Набрать run. Приложение запустится, получит сигнал и вывалится в gdb. Напечатать регистры/трассу вызовов: info registers / bt. По этим данным смотреть, где упало.
Не уверен, что рекурсия здесь поможет. Но -- да, чтобы узнать S1 нужно сначала узнать минимальный S2 для фиксированной первой цифры, либо найти пропущенную вторую цифру (и тогда S2 равен 0). Я сегодня-завтра постараюсь накидать код решения, потому что словами как-то сложно объяснить.
Потому что это динамическое программирование: чтобы найти оптимальное решение задачи, нужно найти оптимальное решение её подзадачи (а размер задачи уменьшается с ростом длины совпадения).
Что за ОС? В линуксе tar себя так не ведёт, только что проверил, fedora 18, ext4. Цитата из info tar, 3.9 Controlling Warning Messages:
<blockquote>
Sometimes, while performing the requested task, GNU `tar' notices some
conditions that are not exactly errors, but which the user should be
aware of. When this happens, `tar' issues a "warning message"
describing the condition. Warning messages are output to the standard
error and they do not affect the exit code of `tar' command.
...
file-changed
`%s: file changed as we read it'
...
</blockquote>
Я бы понял, если бы речь шла про C, но зачем отладочная информация исходнику на ассемблере? Посмотреть память (x/wx address)/глобальные переменные (x/wx name)/стек вызовов (bt)/код (x/10i $pc) можно и без неё.
ip.identification следует использовать только для сборки фрагментированных ip-пакетов, к TCP-сегментации и данным передаваемым внутри TCP соединения ip.identification имеет очень опосредованное отношение.
разность их идентификаторов (Sequence number) должна быть равна размеру окна (Window size) сегмента А
Не размеру окна, а размеру данных в сегменте A. Размер окна — это максимальное количество данных, которые могут быть отправлены без подтверждения. И к тому же он работает в другую сторону: размер окна в пакетах которые мы получаем, означает сколько данных мы можем отправить принимающей стороне.
Вы не так сдвигаете знаковый бит. При арифметическом сдвиге вправо копируется старший (знаковый) бит а не 0.