MASM под Linux?

Часто нам нужно изменить подстроку с несколькими ключевыми словами, разбросанными по строкам, предшествующим подстроке. Рассмотрим элемент xml:

<TASK>
  <UID>21</UID>
  <Name>Architectural design</Name>
  <PercentComplete>81</PercentComplete>
</TASK>

Предположим, мы хотим изменить 81, на какое-то другое значение, скажем 40. Сначала определите .UID.21..UID., затем пропустите все символы, включая \n до .PercentCompleted.. Шаблон регулярного выражения и спецификация замены:

String hw = new String("<TASK>\n  <UID>21</UID>\n  <Name>Architectural design</Name>\n  <PercentComplete>81</PercentComplete>\n</TASK>");
String pattern = new String ("(<UID>21</UID>)((.|\n)*?)(<PercentComplete>)(\\d+)(</PercentComplete>)");
String replaceSpec = new String ("$1$2$440$6");
//note that the group (<PercentComplete>) is $4 and the group ((.|\n)*?) is $2.

String  iw = hw.replaceFirst(pattern, replaceSpec);
System.out.println(iw);

<TASK>
  <UID>21</UID>
  <Name>Architectural design</Name>
  <PercentComplete>40</PercentComplete>
</TASK>

Подгруппа (.|\n), вероятно, является отсутствующей группой $3. Если мы сделаем его не захватывающим с помощью (?:.|\n), то $3 будет (<PercentComplete>). Таким образом, шаблон и replaceSpec также могут быть:

pattern = new String("(<UID>21</UID>)((?:.|\n)*?)(<PercentComplete>)(\\d+)(</PercentComplete>)");
replaceSpec = new String("$1$2$340$5")

, и замена работает правильно, как и раньше.

13
задан Braiam 23 January 2017 в 03:37
поделиться

5 ответов

Wiki говорит

, MASM32 EULA не позволяет свое использование в разработке программного обеспечения с открытым исходным кодом и только позволяет ей быть выполненной в операционных системах Windows.

, таким образом, это нет.

11
ответ дан flolo 23 January 2017 в 03:37
поделиться

Необходимо смочь выполнить MASM под Вино .

6
ответ дан JesperE 23 January 2017 в 03:37
поделиться

Лично я предпочитаю стиль NASM, но можно, вероятно, выполнить MASM под Вином (или сбой что в VM). В конце концов, этому не должны быть нужны никакие экзотические вызовы API.

я смог выполнить двоичный файл Win32 NASM под Вином на Linux без любых проблем [длинная история, никакое сетевое соединение].

, Если Вы хотите преобразовать двоичный формат Microsoft OMF в ELF затем, необходимо смочь сделать настолько использующий objcopy, но Вы, возможно, должны скомпилировать в поддержке правильных объектных форматов.

3
ответ дан Artelius 23 January 2017 в 03:37
поделиться

MASM не работает с WINE, я запускаю MASM под Virtual Box

4
ответ дан 1 December 2019 в 20:02
поделиться

Запустите MASM под Wine или посмотрите в вики, что MASM может работать только в Windows.

С уважением.

1
ответ дан 1 December 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: