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

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

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

Насколько я понимаю (хотя глубоко не копал), возможности заэкранировать символ доллара в имени переменной, чтобы можно было написать перемещаемое выражение, нет. Причину этого я вижу в том, что проект GCC и проект binutils, частью которого является GNU assembler - не связаны друг с другом.
Page generated Apr. 30th, 2026 01:29 am
Powered by Dreamwidth Studios