Как напечатать строку в OS-нейтральной форме? - PullRequest
1 голос
/ 05 сентября 2010

Я пытаюсь напечатать строку так, чтобы она не зависела от ОС. Например, программа должна работать в Windows так же, как в * nix.

Это вообще возможно? Я предполагаю, что поскольку базовая архитектура та же (x86), что метод будет таким же. Это так же просто, как вызвать прерывание?

Причина этого в том, что я пытаюсь написать компилятор, который генерирует ассемблерный код - на этом раннем этапе его разработки присутствует только несколько функций - я хотел бы иметь возможность протестировать сгенерированный ассемблерный код в Windows или * nix. В будущем будет невозможно поддерживать нейтральность к платформе при генерации того же кода, но в основном все, что я хочу сделать на этом этапе, - это напечатать строку.

Ответы [ 4 ]

3 голосов
/ 05 сентября 2010

Можете ли вы ссылаться на libc? Если вы можете сделать это, вы сможете просто позвонить printf() и покончить с этим. Пример программы можно найти по адресу по этой ссылке .

2 голосов
/ 05 сентября 2010

Чистая сборка не должна считаться переносимой между операционными системами. Универсального способа взаимодействия с системными сервисами из сборки не существует. Вы даже не должны предполагать переносимость между Unix-подобными ОС (POSIX не определяет соглашение о вызовах, хотя некоторые Unix x86 используют общее соглашение).

Даже в языках более высокого уровня соглашения о вызовах могут технически варьироваться от одного компилятора к другому в одной и той же ЦП + ОС, хотя обычно компиляторы используют любое соглашение, заданное для среды хоста.

См. Также страницу Википедии о x86 соглашениях о вызовах .

1 голос
/ 24 сентября 2010

Извините , никто не поднял Java?

0 голосов
/ 24 сентября 2010

Для этого вам нужно написать что-то похожее на полиглот .

...