Я пытаюсь сделать что-то, что печатает остаток, разделенный на знаменатель как дробь в базовой десятке.
Потому что я страх Мне не нравится доступ к памяти без выравнивания, я использую регистр для буферизации последних восьми вычисленных цифр.
Тем не менее, я не мог найти способ записать буфер непосредственно в вывод.
Я знаю, что могу переместить буфер в память и записать это, но я предпочитаю этого не делать.
Есть ли способ записать значение регистра непосредственно в файл?
Я использую встроенную сборку в C ++ с gcc-4.7 на 64-битной Ubuntu.
Редактировать:
Мне очень жаль задавать такой невероятно глупый вопрос.
Я играл с встроенной сборкой и пытался эффективно записать вывод, сгенерированный побайтно, в вывод. Я попытался сделать это, сместив байты, которые были сгенерированы, в один регистр, сохранив этот регистр в памяти и записав 8 байтов с этим адресом памяти на выход (хотя я не уверен, будет ли это совместимым с прямым порядком байтов).
Когда я задавал этот вопрос, я имел в виду, что в нем не было «сохранения этого регистра в памяти». В конце я просто сохранял регистр в буфере каждый раз, когда он содержал 8 байтов, и когда буфер был заполнен, я печатал весь буфер вместо 8 байтов за раз.
Я надеюсь, что это проясняет причину моего, казалось бы, странного вопроса.
«Есть ли способ записать значение регистра непосредственно в файл?»
Нет.
«Так как я опасаюсь невыровненного доступа к памяти, я использую регистр для буферизации последних восьми вычисленных цифр».
Вы не можете писать компьютерные программы при условии, что компьютер враждебен. Чтобы написать программу, вы должны предположить, что компьютер ведет себя регулярно и предсказуемо.
В вашем случае вы должны написать программу таким образом, чтобы доступ без выравнивания был невозможен. Поскольку вы пишете на ассемблере, это ваша ответственность, а не компилятор.
Других решений пока нет …