Что означает код операции машины ответвления (архитектура X86)?

Чтобы запустить подоболочку, используйте $(...)в bash. И вам не нужно перенаправлять ввод, а просто назвать входной файл. Так что опускайте<:

NUM_LINES=$(wc -l "$P")

Выход:

3 three_little_pigs.csv

Одна из возможностей избавиться от имени файла (есть много других )— использовать awk:

NUM_LINES=$(wc -l "$P" | awk '{print $1}')

РЕДАКТИРОВАТЬ 1:

Хорошо, при использовании перенаправления(<)имя файла вообще не будет указано... извините ;)

NUM_LINES=$(wc -l < "$P")
2
15.05.2019, 21:16
1 ответ

В архитектуре ЦП Intel существуют абсолютные скачки/ветвления кода и относительные скачки.

То, что вы нам показываете, является относительным переходом кода операции операнда. Исторически они использовались для экономии размера кода.

Когда вы спрашиваете, что такое 0f, это означает переход на текущий ПК в конце выполняемой текущей инструкции + 0f. Таким образом, 8048448+0f = 8048457, следовательно, листинг сборки, показывающийjle 8048457(jle, означает переход, если меньше или равно)

Точно так же,8048457+15 = 804846c, следовательно,jmp 804846c

Имейте в виду, что все значения и математика представлены в шестнадцатеричном формате.

Кроме того, обратите внимание, что операнды для кодов операций относительных переходов обычно подписаны. Хотя в этих двух примерах они прыгают только вперед, они также могут прыгать в предыдущие места.

1
27.01.2020, 22:17

Теги

Похожие вопросы