Да, вы правильно поняли значение.
Для дальнейшего использования вы можете просто вставить такой код в файл сборки и выполнить его в отладчике. От синтаксиса & t я предполагаю, что он предназначен для gas
, ассемблера gnu. Вы можете проверить это следующим образом:
$ cat > test.s
.att_syntax noprefix
.globl _start
_start:
fldl x
fldl y
fmulp st, st(1)
fldl z
faddp st, st (1)
fstpl z
.data
x: .double 2
y: .double 3
z: .double 4
$ gcc -m32 -nostdlib -g test.s
$ gdb ./a.out
(gdb) b _start
Breakpoint 1 at 0x80480b8: file test.s, line 4.
(gdb) r
Starting program: /var/tmp/./a.out
Breakpoint 1, _start() at test.s:4
4 fldl x
(gdb) s
5 fldl y
(gdb)
6 fmulp st, st(1)
(gdb)
7 fldl z
(gdb)
8 faddp st, st(1)
(gdb)
9 fstpl z
(gdb)
0x080480d4 in ??()
(gdb) x/gf &z
0x80490e4: 10
Примечание я добавил некоторые тестовый вход в конце, и некоторые необходимые вещи на самом верху.
Вы можете, конечно же, изучить все регистры во время выполнения в любой точке, см. Справку gdb для других команд.
Нет, я попытался загрузить некоторые компиляторы, которые поддерживают сборку, но похоже, что для этого требуется весь код, а не часть. Я не мог понять, как проверить фрагмент кода :( –
https://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html –
Какой компилятор вы бы предложили? –