spamsink: (Default)
[personal profile] spamsink
К программистской задаче про доллар.

Вызов puts($foo); компилируется, например, в pushl $$foo - синтаксис GNU ассемблера требует знака доллара перед абсолютными выражениями, и не требует знака подчеркивания перед именами переменных.

Оператор же присваивания $foo[12] = '!'; компилируется в movb  $33, $foo+12 с использованием перемещаемого выражения, которое распознается ассемблером как некорректное абсолютное.

Насколько я понимаю (хотя глубоко не копал), возможности заэкранировать символ доллара в имени переменной, чтобы можно было написать перемещаемое выражение, нет. Причину этого я вижу в том, что проект GCC и проект binutils, частью которого является GNU assembler - не связаны друг с другом.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting
Page generated Apr. 30th, 2026 03:59 pm
Powered by Dreamwidth Studios