Бессмысленное программистское
Apr. 26th, 2013 06:05 am1. Утверждение, что Си суть портабельный ассемблер, не совсем верно. Это портабельный C-style ассемблер, в нём много чего нельзя по-человечески сделать из того, что на нормальном ассемблере делается совершенно тривиально (нетошнотворный Forth's NEXT, например).
2. Если же говорить о портабельном C-style ассемблере, то на эту роль LLVM-овский IR подходит чуть более, чем хорошо. Ну да, будет повербознее, зато гибкость и краса необычайные. Ограничения всё те же -- push сделать нельзя, jmp толком сделать нельзя, и т.д. Ну, C-style, как и было сказано. Надо почитать, как они делают longjmp, но лень. Архитектурно-специфичным кодом же небось, скучно.
3. (unrelated) Людям, которые придумывали x87 floating point arch, хочется сказать что-нибудь не очень приятное. Ну понятно, почему всё так ужасно вышло, но простить это сложно. Т.е. у вас есть FPU, и он умеет трапаться, например, по stack underflow, но трапнется он на следующей FPU-инструкции после той, которая вызвала проблему. Т.е. resume сказать нельзя, и т.д. Who does that?! (машет рукой и удаляется, боромоча)
2. Если же говорить о портабельном C-style ассемблере, то на эту роль LLVM-овский IR подходит чуть более, чем хорошо. Ну да, будет повербознее, зато гибкость и краса необычайные. Ограничения всё те же -- push сделать нельзя, jmp толком сделать нельзя, и т.д. Ну, C-style, как и было сказано. Надо почитать, как они делают longjmp, но лень. Архитектурно-специфичным кодом же небось, скучно.
3. (unrelated) Людям, которые придумывали x87 floating point arch, хочется сказать что-нибудь не очень приятное. Ну понятно, почему всё так ужасно вышло, но простить это сложно. Т.е. у вас есть FPU, и он умеет трапаться, например, по stack underflow, но трапнется он на следующей FPU-инструкции после той, которая вызвала проблему. Т.е. resume сказать нельзя, и т.д. Who does that?! (машет рукой и удаляется, боромоча)
no subject
Date: 2013-04-26 04:12 am (UTC)Это утверждение совсем не верно, и растет, как обычно, из того обстоятельства что программирование, как и любовь, это одно слово, подразумевающее множество разнообразнейших занятий. Верным является другое утверждение: Си это язык программирования чьи конструкции позволяют прямое отображение на команды процессоров. Соответственно, если глядеть из вариаций программирования где цена разработки важнее чем потери десяток и сотен процентов производительности, разница между Си и ассемблером представляется незаметной.