Вопросы с тегами [compiler-construction]

7

голосов
2

ответ
196

Просмотры

Может C # оператора генерировать ноны подключенного MSIL

Речь идет о C # спецификации языка и спецификации CIL языка, а также компании Microsoft и C # поведения компилятора Моно. Я строю некоторые инструменты анализа кода (независимо от того, что), которые работают на КСС. Учитывая несколько примеров коды, я заметил, что заявления коды (попытаться / поймать, IfElse, ifthen, петлю, ...) генерировать подключенные блоки MSIL. Но я хотел бы, чтобы убедиться, что я не могу писать C # код конструкции, которое дает Неподключённый MSIL. Более конкретно, я могу написать любое заявление, C #, который переводит с (что-то подобное): IL_0000: IL_0001: IL_0002: // дыра IL_001a: IL_001b: Я уже пробовал некоторые странные вещи, используя Гото и вложенные циклы, но, может быть, я не так сумасшедший, как некоторые пользователи будут.
Regis Portalez
1

голосов
2

ответ
43

Просмотры

Поэтому нам нужно как Look Ahead символ и прочитать вперед символ в компиляторе

а я читал некоторые общие понятия относительно разбора в compiler..i наткнулся смотреть вперед и читать вперед символ я искать и читать о них, но я застрял, как, почему мы должны их обоих? был бы признателен за любого рода символ предложение LOOKAHEAD: когда узел рассматривается в дерево разбора для терминала, и терминал соответствует опережения символ, то мы продвигаемся в обоих анализа и ввода чтения aheadsymbol: лексический анализатор может понадобиться прочитать некоторые символ перед ним может принять решение о маркере быть возвращены
Mubeen Khan
1

голосов
0

ответ
54

Просмотры

Оптимизация закрытия включать только переменные, используемые spawnees

м: = 1 п: = 2 удовольствие D {d: = 3 е: = 4 удовольствия А {а: = 5 удовольствия С {с: = 6 лога D D ()} С () D ()} удовольствие В {Ь : = 7 RET A} B () ()} Рассмотрим приведенный выше код, намеренно сделал трудно анализировать «вручную», в функции B, функция Возвращаемый, и в этот момент он должен захватить окружающую среду, которая была бы БДН е , Но после того, как внимательно мы можем видеть, что только с и, вероятно, м должны быть захвачены. Я даже не уверен в этом. Как определить, какие переменные включить в закрывающем Evironment для отставки А в тот момент, когда компилятор генерирует в отставке А Предположит, что мы имеем АСТА? Имея, что спросил, я говорю, что я уже пробовал. Я попытался включить только все «ниже» текущей функции B, т.е. {mnde}, но это оставляет много ненужных данных в куче в больших программах. Я пытался построить дерево все возможного «spawnees» (извините за хромой срок, не знает лучшее слово) из А, а затем объединять то, что они относятся, но я узнал, что он может содержать циклические ссылки и даже ссылки на родительские функции B и б себя, в этот момент я почувствовал головокружение и через пару дней думая об этом, я просто нужна помощь. Так как же построить этот список? в этот момент я почувствовал головокружение и через пару дней думая об этом, я просто нужна помощь. Так как же построить этот список? в этот момент я почувствовал головокружение и через пару дней думая об этом, я просто нужна помощь. Так как же построить этот список?
exebook
1

голосов
1

ответ
111

Просмотры

Удаление избыточной экспрессии с LLVM и алгоритмом локальной нумерации значения

Так что мой C код: #include силы основных () {Int а, б, в, г; б = 18, с = 112; B = A - D; D = A - D; } И часть его ИК:% 5 = нагрузка I32, I32 *% 1, выравнивание 4% 6 = нагрузка I32, I32 *% 4, выравнивание 4% 7 = суб NSW I32% 5% 6 магазин I32% 7, I32% 2 *, выравнивание 4% 8 = нагрузка I32, I32 *% 1, выравнивание 4% 9 = нагрузка I32, I32 *% 4, выравнивание 4% 10 = суб NSW I32% 8,% 9 магазин I32% 10, I32 * 4%, выравнивание 4 я реализованный алгоритм LVN для обнаружения избыточной экспрессии, который является д = а - д. Теперь для оптимизации, мне нужно управлять инструкцией и сделать его d = Ь. Я не знаю, как сделать это с LLVM и как я могу манипулировать IR. Я новичок в LLVM, так что это может быть глупый вопрос, но я действительно путают. Так, LLVM работает на ИК, я понимаю, что, когда это видит «D = а - d» будет первая загрузкой и д, но бинарная операция и хранение команды в ИК должны быть изменены таким образом, что 4% получает значение от 2%. Может кто-нибудь помочь мне проверить, если я правильно понять это, и как я могу манипулировать IR оптимизировать код.
Tasmia Rahman
1

голосов
1

ответ
59

Просмотры

Как определить, является ли грамматика подходит сверху вниз разбора?

Я читал сверху вниз разбора из драконьей книги в последнее время, и один из вопросов, просит проверить, если данная грамматика подходит сверху вниз разбора или нет. Как это определить? Существуют следующие условия для грамматики достаточно, чтобы быть действительным один? 1) Левый факторизуется. 2) Отсутствие левой рекурсии. 3) однозначна.
Michelle
1

голосов
1

ответ
67

Просмотры

Java String to Neo4J Create Graph statements

Я должен создать график на основе результата запроса. После получения результатов на основе извлеченного столбца в виде строки (столбец, который представляет собой SQL-предложение) Мне нужно создать соответствующие предложения создания графа следующим образом: Получено столбец: _fn1 (filed1, filed2, filed3, «», filed4, filed5) AS new_alias_field Фразы, которые будут созданы для создания графа на Neo4j: CREATE (new_alias_field: fields_from {столбец: 'new_alias_field'}) CREATE (filed1: fields_to {колонки: 'filed1'}) CREATE (filed2: fields_to {колонки: 'filed2'} ) CREATE (filed3: fields_to {колонки: 'filed3'}) CREATE (filed4: fields_to {столбец: 'filed4'}) CREATE (filed5: fields_to {столбец: 'filed5'}) CREATE (fn1: функция {имя: '_ fn1 '}) CREATE (filed1) - [: used_by {роли: [' параметров ']}] -> (fn1), (filed2) - [: used_by {роли: [ 'Пары']}] -> (fn1), (filed3) - [: used_by {роли: [ 'пары']}] -> (fn1), (filed4) - [: used_by {роли: [ 'пары' ]}] -> (fn1), (filed4) - [: used_by {роли: [ 'парам']}] -> (fn1) CREATE (fn1) - [: а] -> (new_alias_field) лучший способ для достижения это создает парсер? или я должен использовать что-то вроде JSqlParser, поскольку исходная строка имеет некоторые операторы SQL? Должен ли я создал свой собственный парсер? есть ли другой доступный инструмент? Я пытаюсь использовать JSqlParser, получить объекты, а затем преобразовать их. Все еще в процессе . попробовать код в Neo4j, после запуска сценария создания вы можете запросить узлы с помощью: Match (new_alias_field {столбца: «new_alias_field»}) возвращения new_alias_field вы должны получить: [ 'Пары']}] -> (fn1), (filed4) - [: used_by {роли: [ 'пары']}] -> (fn1) CREATE (fn1) - [: а] -> (new_alias_field) лучший способ для достижения этой цели является создание парсера? или я должен использовать что-то вроде JSqlParser, поскольку исходная строка имеет некоторые операторы SQL? Должен ли я создал свой собственный парсер? есть ли другой доступный инструмент? Я пытаюсь использовать JSqlParser, получить объекты, а затем преобразовать их. Все еще в процессе . попробовать код в Neo4j, после запуска сценария создания вы можете запросить узлы с помощью: Match (new_alias_field {столбца: «new_alias_field»}) возвращения new_alias_field вы должны получить: [ 'Пары']}] -> (fn1), (filed4) - [: used_by {роли: [ 'пары']}] -> (fn1) CREATE (fn1) - [: а] -> (new_alias_field) лучший способ для достижения этой цели является создание парсера? или я должен использовать что-то вроде JSqlParser, поскольку исходная строка имеет некоторые операторы SQL? Должен ли я создал свой собственный парсер? есть ли другой доступный инструмент? Я пытаюсь использовать JSqlParser, получить объекты, а затем преобразовать их. Все еще в процессе . попробовать код в Neo4j, после запуска сценария создания вы можете запросить узлы с помощью: Match (new_alias_field {столбца: «new_alias_field»}) возвращения new_alias_field вы должны получить: (New_alias_field) Самый лучший способ для достижения этой цели является создание парсера? или я должен использовать что-то вроде JSqlParser, поскольку исходная строка имеет некоторые операторы SQL? Должен ли я создал свой собственный парсер? есть ли другой доступный инструмент? Я пытаюсь использовать JSqlParser, получить объекты, а затем преобразовать их. Все еще в процессе . попробовать код в Neo4j, после запуска сценария создания вы можете запросить узлы с помощью: Match (new_alias_field {столбца: «new_alias_field»}) возвращения new_alias_field вы должны получить: (New_alias_field) Самый лучший способ для достижения этой цели является создание парсера? или я должен использовать что-то вроде JSqlParser, поскольку исходная строка имеет некоторые операторы SQL? Должен ли я создал свой собственный парсер? есть ли другой доступный инструмент? Я пытаюсь использовать JSqlParser, получить объекты, а затем преобразовать их. Все еще в процессе . попробовать код в Neo4j, после запуска сценария создания вы можете запросить узлы с помощью: Match (new_alias_field {столбца: «new_alias_field»}) возвращения new_alias_field вы должны получить:
JPRLCol
1

голосов
0

ответ
116

Просмотры

Создание символов отладки для GDB вручную

Вступление. Для моих составителей, конечно, я должен перевести некоторый язык на ассемблер. Теперь мой код имеет Segfault, и у меня есть трудное время отладки это. Имея возможность наблюдать переменные бы упростить процесс много, но окончательный код ASM имеет только регистры и их производные. Вопрос. Как я могу создавать отладочные символы для GDB вручную? Я считаю, что я могу распространять всю необходимую информацию. Будет ли отдельный файл будет создан или это будет часть ассемблера? В первом случае, как сделать GDB известно об этом файле? Ссылка на какую-то инструкцию достаточно. Я искал для одного и только смог найти «GCC -g» и некоторые вопросы о генерации символов файлы отдельно.
dyukha
1

голосов
0

ответ
63

Просмотры

Как преобразовать неоднозначную грамматику однозначной грамматики

У меня грамматик, который я считаю неоднозначно. Я не знаю, как устранить неоднозначность и преобразовать его в недвусмысленные грамматик. выражение :: = Num | именующий | incrop выраж | выраж incrop | выраж бинарного оператор выраж | (Выражение) именующее :: = $ выраж incrop :: = ++ | - бинарный оператор :: = + | - | Num :: = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 И это то, что я придумал: выражение :: = Num выражение»| именующее выражение '| incrop выраж выражение»| (Выражение) выражение 'выражение' :: = incrop выражение»| бинарный оператор выраж выражение»| пустой именующее :: = $ выраж incrop :: = ++ | - бинарный оператор :: = + | - | Num :: = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 это правильно?
pooria
1

голосов
0

ответ
55

Просмотры

Каковы точные условия для общего подвыражения (CSE) происходит в GHC?

Я обнаружил, что Haskell способен выполнять CSE, если соблюдены некоторые условия. Я читал эту статью: https://wiki.haskell.org/GHC_optimisations, но я не нашел никакой конкретной информации и был перенаправлен в руководстве GHC, который сказал мне только, как включить его и сбросить журнал этого оптимизатора. Я хотел бы, чтобы определить, будет ли мой код будет в состоянии выполнить его или нет. Где я могу найти такую ​​документацию? Издается это где-нибудь?
radrow
1

голосов
0

ответ
75

Просмотры

Как компилятор ссылаться на свою собственную продукцию

«Еогеасп» является ключевым словом Java языка и когда компилятор встречает это ключевое слово в источнике, он знает, что коллекция следующее это ключевое слово должно реализовать «Iterable» интерфейс. «Итератор» интерфейс сам по себе является частью скомпилированного кода Java, так как может ссылка составитель свой собственный выход, как может компилятор будет зависеть от его собственного производства? Подумайте о гипотетической точке в прошлый раз, когда есть только Java компилятор (вероятно, написано с C или C ++) и основы Java еще не составлены. Java.lang пакет и все вещи в нем еще не составлены так нет Iterable интерфейса в данный момент времени. Компилятор Java будет компилировать исходный код пакета java.lang из исходного кода и создавать байт-код для Iterable интерфейса в будущем. В этот момент как-то Java компилятор должен знать о Iterable интерфейса (так как она является частью спецификации языка), поэтому он может компилировать исходный код, который использует Еогеасп итератора. Как это стало возможным?
e-mre
1

голосов
2

ответ
407

Просмотры

Flex: Назначение в условных

Если я использую Assignment в условна, например, если для (UserType = «админ») Flex бросает предупреждение, в отличие от Java, который выдает сообщение об ошибке. Почему Flex должен делать это, несмотря на то, один из самых новых языков? 1100: Назначение внутри условного. Возможно, вы имели в виду == вместо =?
dharm0us
1

голосов
2

ответ
401

Просмотры

Проблема во время компиляции Java-код на сетевом диске, он создает файлы класса в нижнем регистре

Я использую систему управления версиями четко случай, я создал свой репозиторий ВОБ (который имеет свой Java исходный код) на сетевом диске, когда я рому мой JAVAC компилятор на источник компилируется нормально, но она генерирует файлы классов в нижнем регистре, где он должен начать с прописной буквы. я видел код каждую вещь упоминается совершенным. Затем я попытался создать пример кода Java на сетевом диске, и я попытался переименовать его в верхнем регистре, но он автоматически меняется в нижнем регистре. делать какие-либо один имеет решение для этого?
dagg
1

голосов
2

ответ
75

Просмотры

vb.net внешнего только свойства или методы

Есть простой способ в vb.net, чтобы замаскировать публичное свойство или метод из внутреннего пространства имен? Было бы полезно в качестве инструмента рефакторинга, чтобы изолировать внутренние зависимости и, возможно, для обеспечения не-рекурсия политики в отношении внешних услуг.
Dave Causey
1

голосов
1

ответ
38

Просмотры

Как я могу интегрировать свой компилятор в VS2008?

Я делаю компилятор Тигра, и я хочу интегрироваться с VS2008, но я прочитал много материала и не говорю, очень хорошо, как я могу сделал это. Какой тип проекта, что мне нужно сделать? Как зарегистрировать свой язык / компилятор в VS2008, я знаю, что мне нужно установить SDK, я знаю, что мелочь, что мне нужно сделать, но шаги, что более важно, как какой класс мне нужно реализовать ... Спасибо за все
Mauricio
1

голосов
2

ответ
177

Просмотры

VC ++ время компиляции и производительности

Я работаю над проектом multiplaform (MacOS, Linux и Windows) и у меня были некоторые проблемы с производительностью при попытке компиляции большой исходный файл в VS C ++ 2010. Вот небольшой фон. Там в один .cpp файл внутри проекта, который 800KB большой. Размер файла вызван тем, что я составитель массив, который содержит информацию об изображении. Таким образом, это огромный массив символов без знака, который не может быть разделен. Теперь, я работаю на MacOS в течение последних нескольких месяцев, так что я не заметил эту проблему, пока несколько дней назад. В обоих MacOS и Linux, GCC компилирует файл в секунду или около того, но когда я использую VC ++ это занимает около часа. Сначала я, хотя это было обсаженных самого компьютера, так как это не быстро один. Но затем я попытался Cygwin и GCC 4 в той же машине, и время компиляции было почти так же быстро, как и в Mac OS. Таким образом, я должен предположить, что проблема вызвана чем-то в VC ++ 2010. Я не Твик VC ++ в любой форме. Файлы проекта создаются CMake, так что я считаю, что если какое-то место для оптимизации здесь. Любая помощь будет оценена. Благодарю. Hernan
Hernan
1

голосов
2

ответ
427

Просмотры

большие языки программирования реализованы с использованием таких инструментов, как ANTLR, JavaCC и т.д.

Я знакомясь с ANTLR, поэтому был этот вопрос. Если я должен создать надежный язык программирования, как Java или C #, я бы использовать инструменты компилятора для его создания или писать рукописный код для компилятора. Существуют ли какие-либо практические примеры широко используемых языков, созданных с помощью инструментов компилятора? Также есть проблемы там с производительностью инструментом сгенерированных кода в сравнении с рукописным компилятором.
nash
1

голосов
2

ответ
684

Просмотры

Какие компиляторы могут встраивать косвенные вызовы функций?

LDC D компилятор LLVM может встраивать косвенные вызовы функций при определенных обстоятельствах, если он может доказать, что цель статический известна. Вот пример игрушка (в D), где это может произойти: вакуум основных () {UINT Num; incNum недействительными () {Num ++; } Автоматического myDelegate = & incNum; myDelegate (); } В этом случае, даже если вызов myDelegate () номинален косвенный вызов, цель очевидна для человека читателя и анализ потока LLVM / LDC, поэтому он получает встраиваемую. Насколько широко функция является возможностью встраивать косвенные вызовы функций статический познаваемые задачи в современных компиляторах? Является LLVM только один вперед-Несвоевременное компилятор, который может это сделать? Это больше общего с JIT компиляторов?
dsimcha
1

голосов
3

ответ
180

Просмотры

Toolchain вопрос: Как вы добавить заголовок / LIB поэтому компилятор знает, где его найти?

Я сделал набор инструментов, используя этот скрипт: http://gist.github.com/403608 (более или менее модифицированный, чтобы заставить его работать) устанавливаются все и теперь, когда я пытаюсь скомпилировать использовать его я получаю сообщение об ошибке, когда я. / настроить это говорит, что мой C компилятор не может создавать exeicutables. Я думаю, что мой компилятор просто не знает, где искать все заголовки и LIBS ... потому что они не находятся в / USR / они находятся в / вар / SDK / USR / есть способ сказать мой компилятор всегда смотреть в / вар / SDK / USR / также?
Jeremy Iglehart
1

голосов
1

ответ
209

Просмотры

тип записи промежуточной генерация кода [закрыто]

Здравствуйте я ищу какой-то ориентации или вариант ссылок. Я строй компилятора, но я хочу, чтобы обрабатывать разнородные типы (например, C структуру). Массив является однородным. Я хочу знать теорию, я знаю, уже есть способы и методы, как изменить что-то в таблице переменных и прочее. Я нашел кое-что в книге Louden, но это не является полной = (объяснение это осталось в воздухе. Я прибегая к помощи, но я не знаю, как Google это .... Я оценил бы некоторую ориентацию относительно того, как найти существующие теории и генерации кода, и тому подобное. язык STATIC типизированных
bb2
1

голосов
1

ответ
426

Просмотры

Может C компилятор предвыборки данных вокруг вызова?

Можно ли хороший компилятор C с высокой оптимизацией позволили оптимизировать код и предварительной выборку разместить предварительную выборку перед тем некоторой функции вызова: структура * а; // ... function_first (& (abc-> field1)); abc-> field2 = abc-> field3 + abc-> Field4 + abc-> Field5 + ...; // много работы на поле структуры function_second (& (abc-> field1)) Таким образом, можно закодировать после оптимизации компилятора, чтобы иметь предварительную выборку для сип полей и переместить его выше function_first вызова (), как это: STRUCT * аЬс; // ... __prefetch (abc-> field2); __ упреждающей (abc-> Field5); function_first (& (ABC-> поле1)); abc-> field2 = abc-> field3 + abc-> Field4 + abc-> Field5 + ...; // много работы на поле структуры function_second (& (abc-> field1)) Функция function_first () может быть аннотированный как чистая (не имеют никаких побочных эффектов на ABC полях, кроме field1), или программа может быть составлена ​​в оптимизации целого программы (-ipo / Qipo для Intel), где компилятор может проверить, какое function_first делать. UPDATE: без вызовов на предварительную выборку возможны, но это вопрос о смешивании вызовов и предварительную выборку Спасибо.
osgx
1

голосов
1

ответ
101

Просмотры

Измерение использования байт-коды

Я ищу для абсолютного метода для сравнения / измерительных вычислений, выполняемых в питоне. В Java, можно вычислить использование байт-кода для данного набора инструкций. Есть ли подобный подход, который я мог бы взять в Python? Я открыт для альтернативных предложений для измерения вычисления выполняются до тех пор, как дисперсия минимальна (время, например, является слишком чувствительным к машине код выполняется на).
sxw
1

голосов
1

ответ
310

Просмотры

Scala Compiler - Как проверять таблицы символов?

Насколько я знаю, состояние компилятора состоит из AST и таблицы символов. Я могу осмотреть AST с -Xprint или -Ybrowse. Как я могу проверить таблицу символов?
Stefan K.
1

голосов
4

ответ
739

Просмотры

дизайн компилятор, создавая язык. Как?

Книга Дракон является известной книгой для проектирования компилятора. Есть еще одна книга, как это или большая статья о том, что? И О чем ключевые слова, о компиляторах? Я хочу знать, как создается новый язык.
miqbal
1

голосов
2

ответ
144

Просмотры

EXE без библиотек / Runtimes?

Я видел программу один раз, что упаковано все necessery + мою среду время выполнения файла ех в один исполняемый файл. Тогда я могу начать ех и он не будет запускаться автоматически (нет Времени автономной установки) Для примера я старый файл vb6 еха и другие DLLS / OCX ... + VB6 Времени автономной работы ... Я не заботимся Если ех будет затем-MB , :) Я мог бы сделать это с помощью NSIS или другой установки, но есть что-то более элегантное? (Я знаю, что есть что-то подобное! Это было некоторое коммерческим решением) Спасибо
MilMike
1

голосов
1

ответ
234

Просмотры

Бесплатные компиляторы для контроллеров на основе XA / SmartXA / SmartXA2. Имеете ли?

Мы разрабатываем часть защиты для ключа на основе Philips NXP SmartXA2. Он поддерживает 2 режим работы: 8051 совместим VM (8 бит) и SmartXA2 режима (16 бит). Я уже использовал SDCC для 8051 развития режима. Но я хочу, чтобы не прилипают к 8-разрядным! Raisonance Kit имеет поддержку 16-битный режим XA, но это коммерческое. Интересно, есть ли свободный C компиляторы, что там поддерживают контроллеры на основе XA / SmartXA2? Спасибо
ezpresso
1

голосов
2

ответ
869

Просмотры

Получение встраивания не удалось предупреждением во время компиляции GCC

Что является причиной для следующего вида предупреждения встраивания не удались при вызове функции: Размер коды может расти. когда функция статического inline.Following является своего рода функция определена в заголовочном файле. Как я могу избавиться от упомянутого выше предупреждения. Статическая __inline___ getSomething () {вернуть что-то; } EDIT да я попытался удалить встроенный, но я получаю следующее предупреждение функции getSomething определена, но не используется. Есть ли способ, чтобы удалить оба предупреждения? [EDIT] -g -Wno-неиспользованный -g -ansi -pedantic -Wall -Wshadow -Wpointer-Arith -Wwrite-строка
thetna
1

голосов
1

ответ
184

Просмотры

Проблема с обратным выводом с простой суммой и умножения грамматики

У меня возникли некоторые проблемы с пониманием, как, используя анализатор снизу вверх и, например, входная строка 1 + 2 * 3, перейти от «дна» до «сверху». Вот грамматика я использую (я бы сказал, что это правильно, как это один нашел в Разработке компилятор) E = E плюс T | Т; Т = Т раз число | целое число; Это мой обратный вывод: Int (1) Т (1) Е (1) Е (1) плюс Int (2) Е (1) плюс Т (2) Е (1) плюс Е (2) Е (1) плюс Е (2) раза Int (3) Е (1) плюс Е (2) раза Е (3)
devoured elysium
1

голосов
2

ответ
317

Просмотры

Выполнение строки или экранный Actionscript компилятор во время выполнения

Я разрабатываю генератор компилятора в ActionScript 3 с Flash Builder 4. Мне нужно найти способ: 1.- Execute код внутри строки. это может быть очень сложный кодом, а не только отслеживать функции (), но полный код 2.- Другой альтернативой может быть сказать в Actionscript компилятор для компиляции коды автогенерируемой от моего генератора компилятора. Если кто-то знает, по крайней мере, один Ваты делать это, пожалуйста, дайте мне знать. большое спасибо
Yury Euceda
1

голосов
2

ответ
61

Просмотры

Как сопоставляется MDSD модель интерпретации кодирования стиля

Будем надеяться, что этот вопрос не является слишком общим: Обычно MDSD определяется как преобразование спецификаций модели в источниках компилируемых программ. Кроме этого, можно было бы интерпретировать модель. В то время как интерпретация, как правило, имеет тенденцию быть медленнее, развертывание обновленной модели может быть проще. В общем: Почему бы один скомпилировать модель с использованием MDSD? Когда следует интерпретировать модели?
SteAp
1

голосов
1

ответ
625

Просмотры

Makefile two compilers issue

Я попросил написать Makefile, который нужно выбирает между двумя составителями, и каждый из этих компиляторов должен поддерживать 3 сборку версии (отладки, релиз, тест). Есть много переменных, которые изменяются на основе входных данных (компилятор, опции компилятора, каталог вывода, включают в себя каталоги и т.д.). Мой первый вариант должен был пройти через целевые конкретных переменных и настроить переменные в соответствии с целевой. Как вы думаете, что это хорошая идея? Я не очень знаком с теми рода переменными. Мне кажется, что если я что-то вроде этого: релиз: Variable1 = value1 #release является целевой релиз: variable2 = релиз значение2: # некоторое правило компиляции только variable1 будет настроен. Правильно ли я об этом? Обновление Спасибо за ваш ответ. Я пытаюсь разобраться с вопросом выбора компилятора через дополнительную переменную, которая будет настроен в соответствии с целью. Но вот проблема. У меня есть следующие строки: релиз: CFLAGS = -DCORE_SW_VERSION = '$ (CORE_SW_VERSION) "' -Wall релиз: CFLAGS + = -fgnu89-рядный -mno энергонезависимая-кэш $ (ВКЛЮЧИТЬ) релиз: TARGET = релиз После этой линии , я некоторая последовательность ifeq, в котором я решить, какой компилятор использовать (в соответствии с целевой переменным значением). И CFLAGS настроен правильно, но переменная TARGET пуста. Это приводит меня к выводу, что вы можете настроить только один целевой конкретной переменной. Я прав? Если нет, то я не в курсе, что я делаю неправильно. Не могли бы вы мне помочь? -Wall релиз: CFLAGS + = -fgnu89-рядный -mno энергонезависимый-кэш $ (ВКЛЮЧИТЬ) релиз: TARGET = релиз После этой линии, я какая-то последовательность ifeq, в которых я решаю, какой компилятор использовать (в соответствии с TARGET значения переменного) , И CFLAGS настроен правильно, но переменная TARGET пуста. Это приводит меня к выводу, что вы можете настроить только один целевой конкретной переменной. Я прав? Если нет, то я не в курсе, что я делаю неправильно. Не могли бы вы мне помочь? -Wall релиз: CFLAGS + = -fgnu89-рядный -mno энергонезависимый-кэш $ (ВКЛЮЧИТЬ) релиз: TARGET = релиз После этой линии, я какая-то последовательность ifeq, в которых я решаю, какой компилятор использовать (в соответствии с TARGET значения переменного) , И CFLAGS настроен правильно, но переменная TARGET пуста. Это приводит меня к выводу, что вы можете настроить только один целевой конкретной переменной. Я прав? Если нет, то я не в курсе, что я делаю неправильно. Не могли бы вы мне помочь? Я не знаю, что я делаю неправильно. Не могли бы вы мне помочь? Я не знаю, что я делаю неправильно. Не могли бы вы мне помочь?
Nikola
1

голосов
1

ответ
492

Просмотры

Ignore missing .obj files or “/P switch + external tool + linker = hell”

Я пытаюсь сделать настройку, как описан в моем предыдущем вопросе: Любой способ синтаксического анализа препроцессированного источника через внешний инструмент, прежде чем он компилирует? Все мои .cpp файлы устанавливаются компилировать с / р, который генерирует .i (предварительно обработанные) файлы для всех из них, но без каких-либо объектных файлов. Эти генерируемые .i файлы также добавлены в мой проект, и внешний вариант сборки инструмента устанавливается на мой инструмент, который модифицирует эти файлы и сохраняет их под новым расширением, .obfuscated.cpp Все эти .obfuscated.cpp файлы добавляются также проект, и установлены для компиляции обычно, производя объектные файлы. Теперь проблема заключается в том, что Visual Studio (или компоновщик, кто-то из них) по какой-то причине хочет OBJ файлов как из .cpp файлов (которые теперь только сохраненных в .i файлов, не объектных файлов, созданные), и из .obfuscated. каст (которые создаются обычно). Я предположил бы, что линкер не требует OBJ-файлов из источников, которые установлены для компиляции с параметром / P, потому что, хорошо, что опция предотвращает объектные файлы от создания. Теперь я вижу только два пути решения этого: 1) Выполните сборку в два этапа. В первом убедитесь, что все .cpp файлов препроцессор и сохраняются в .i файлов. Эта сборка не должна закончить, просто нужно сохранить .i файлы. Тогда после этого, я выбираю все файлы .cpp и установить их на «Исключить из сборки», то все компилируется, как это должно быть. 2) Вместо добавления файлов в проект и с помощью внешнего устройства сборки инструмента, сделать шаг предварительно ссылку вместо, в котором мой собственный инструмент будет автоматически найти все файлы .i (может принимать все * .i в определенной директории ), процесс их * .obfuscated.cpp, а затем вручную вызвать кл. ех на всех эти файлы для создания объектных файлов, переименовывать их собственные имена (так что линкер считает, что они являются объектными файлами, созданные из оригинальных источников) и поместить в промежуточный каталог. Но в этом случае я бы отслеживать все аргументы компилятора и изменить их соответствующим образом, если что-то изменится в моем проекте ... Оба эти решения не кажутся очень beatuful. Есть ли какой-либо другой способ сделать это в Visual Studio? Разве я не могу сказать, компоновщик игнорировать отсутствующие .obj файлы? (Все символы будут найдены в любом случае ...) Оба эти решения не кажутся очень beatuful. Есть ли какой-либо другой способ сделать это в Visual Studio? Разве я не могу сказать, компоновщик игнорировать отсутствующие .obj файлы? (Все символы будут найдены в любом случае ...) Оба эти решения не кажутся очень beatuful. Есть ли какой-либо другой способ сделать это в Visual Studio? Разве я не могу сказать, компоновщик игнорировать отсутствующие .obj файлы? (Все символы будут найдены в любом случае ...)
Cray
1

голосов
1

ответ
91

Просмотры

Как отрегулированы Ссылки в VS2008 веб-сайт?

Я создаю веб-сервис, который использует несколько библиотек DLL, некоторые из которых являются проекты, которые я разработаны и другими являются внешними библиотеками DLL. Те, которые являются внешними, я просто скопировать в каталог Bin моего WebService. Тем не менее, те, которые из моих собственных проектов, которые я добавил в качестве ссылок щелкнув правой кнопкой мыши по папке и выбрав бен добавить ссылку. Это добавляет и библиотеку DLL и PDB файл в папку бин. Тем не менее, когда я строю сайт, я не знаю, где эти файлы берутся из. Мне нужно знать, потому что я пытаюсь зашифровать эти библиотеки DLL в качестве шага после построения на веб-сервиса, и мне нужно знать, где я могу найти DLL я должен зашифровать. Нужно больше информации, дайте мне знать.
jrbalsano
1

голосов
1

ответ
162

Просмотры

F # игнорирует CallingConvention набор в DllImport атрибут?

При попытке вызвать функцию со следующей подписью (составитель MSVC ++): BOOL CreateJunctionPoint (LPCTSTR szMountDir, LPCTSTR szDestDir); и описаны в F #, как [] ехЬегп Int CreateJunctionPoint (исходная строка, строка целевой) я получаю стека дисбаланс. Та же функция вызывается из C # отлично работает. После изменения соглашения о вызове в STDCALL в C ++: BOOL __stdcall CreateJunctionPoint (LPCTSTR szMountDir, LPCTSTR szDestDir); F # программа начнет работать нормально (хотя по-прежнему имея CallingConvention = CallingConvention.Cdecl множества) Кажется очевидной ошибка компилятора для меня. Оба компиляторы от Visual Studio 2010 (Microsoft (R) F # 2.0 компилятор построить 4.0.30319.1)
Alexander
1

голосов
3

ответ
171

Просмотры

C ++ шаблон функция - ошибка компилятора: «не может изменяться от от сопза полукокса * до Int»

У меня есть шаблон функции указанного шаблона: jsonParse пустот (json_object * jobj, eParseWhat parseWhat, T & значение) {... если (parseWhat == PARSE_UID) {значение = json_object_getInt (Val); } Если (parseWhar == PARSE_EMAIL) {значение = json_object_getString (Val); } ...} Теперь, когда я хочу, чтобы разобрать УИД JSON-объект я называю метод с междунарами: json_object * OBJ = ...; INT UID = 0; jsonParse (OBJ, PARSE_UID, UID); Но тогда ошибка компиляции происходит при присвоении в строке: значение = json_object_getString (Val); Из-за вызов с междунаром компилятор считает, что тип переменного значения является INT и json_object_getString (значение) возвращает константный символ *. Таким образом, компилятор говорит: не может конвертировать сопзЬ символ * в целое. Есть ли у Вас какие-либо предложения, чтобы решить эту проблему?
Tobi Weißhaar
1

голосов
2

ответ
102

Просмотры

Книга или графическое видео, которое объясняет такие вещи, как стек, соглашение о вызовах, регистры, процессор материал

Есть одна книга за все это .. печальная часть я могу провести поверхностный разговор обо всех этих вещах. Я пошел в Uni, и получил во всех этих предметах, но я чертов не понимаю, как стек или память действительно выглядит. Я не «получить», что нить на самом деле. Как строка кэша процессора работает, и как она будет признана недействительной с чтения / записи барьеров. Такие вещи, как TLB и т.д. Любая книга или, может быть, небольшая коллекция книг для чтения действительно поможет.
halivingston
1

голосов
1

ответ
820

Просмотры

Динамически -shallow связывание и глубокое связывание

Я работаю над этой проблемой, и я получил ответы: Статический: 13 Динамически -deep связывания: 2
nullException
1

голосов
3

ответ
54

Просмотры

установка компилятора

Я начал изучать два компьютерных языков два года назад. Но есть много вещей, которые я пытаюсь понять. Например, я хотел бы знать, если это возможно установить компилятор (например, C компилятор) на компьютере без установленной операционной системы, установленной на нем?
user1256053
1

голосов
1

ответ
663

Просмотры

Как отключить ARC для связного Framework в Xcode?

Я отдаю себе отчет в общепринятом и полезное решение для Как я могу отключить ARC для одного файла в проекте ?. Тем не менее, как представляется, не будет легко, или даже очевидный способ сделать то же самое для связного Framework. Как вы можете конвертировать / скомпилировать бинарник под АРК, опуская связанный Framework, с помощью -fno-ObjC-дуговой или иначе?
Alex Gray
1

голосов
1

ответ
1.6k

Просмотры

Семантический анализ для языка C

Я искал семантический анализатор для языка C в последнее время, но не мог найти. Я нашел сгибать и YACC файлы языка C для создания синтаксического анализатора. Я сумел изменить их и создать парсер. Но сейчас мне нужно выполнить следующий шаг. Я буду признателен, если кто-то может указать мне на некоторые примеры семантического анализа для C и построения дерева. Любая информация о семантическом анализе будет полезно либо. Я нашел несколько крошечных компиляторов, но они используют свои собственные парсер, чтобы они не номера меня.
roman
1

голосов
6

ответ
3.8k

Просмотры

Running a .class file from java code

Как я могу запустить скомпилированный код (.class) Java от самого кода Java? Я делаю вид предоставления услуги, как компиляция и запуск Java-код на стороне сервера и дают выход к конечному пользователю. Может кто-нибудь предложить подход, который будет выполнить это? импорт java.io. *; общественного класса демо {государственной статической силы основных (String арг []) бросает IOException, InterruptedException {INT результат; попробуйте {System.out.println ( "вывод команды:"); Процесс Proc = Runtime.getRuntime () Exec ( "Java -cp demoh."). InputStream в = proc.getInputStream (); Результат = proc.waitFor (); BufferedInputStream буфера = новый BufferedInputStream (proc.getInputStream ()); BufferedReader commandOutput = новый BufferedReader (новый InputStreamReader (буфер)); Система. out.print (commandOutput); Строка строка = NULL; попробуйте {в то время как ((строка = commandOutput.readLine ())! = NULL) {System.out.print (линия); System.out.println ( "Вывод команды:" + линия); } // конец, а commandOutput.close (); } Поймать (IOException е) {// журнал и / или обрабатывать ее}} поймать (IOException е) {System.err.println ( "IOException поднял:" + e.getMessage ()); }}} } // конец, а commandOutput.close (); } Поймать (IOException е) {// журнал и / или обрабатывать ее}} поймать (IOException е) {System.err.println ( "IOException поднял:" + e.getMessage ()); }}} } // конец, а commandOutput.close (); } Поймать (IOException е) {// журнал и / или обрабатывать ее}} поймать (IOException е) {System.err.println ( "IOException поднял:" + e.getMessage ()); }}}
Madhav Kumar

Просмотр дополнительных вопросов