Как я могу преобразовать ассемблерный код в машинный код в Java - PullRequest
0 голосов
/ 22 мая 2019

У меня есть несколько инструкций для процессора, поэтому у меня есть ассемблерный код и как я могу перевести их в машинный код в Java.

У меня есть такой код:

LI 5
ST 1
AD 1
ST 0
LI 0
BZ 0

И яхочу, чтобы они выглядели так:

85 41 c1 40 80 00

Этот ассемблерный код хранится в текстовом файле, поэтому я попытался прочитать эти данные из текстового файла и попытаться {

        String f = "C:\\Users\\comp\\Desktop\\CompArch\\a.txt";
        FileReader fw = new FileReader(f);
        BufferedReader assembly_file = new BufferedReader(fw);


        Hashtable<String, String> symtab = new Hashtable<String, String>();
        String str;
        int z=0;


        String f4 = "C:\\Users\\comp\\Desktop\\CompArch\\MACHINE_CODE.asm";
        FileWriter fw4 = new FileWriter(f4);
        BufferedWriter machine_code_file = new BufferedWriter(fw4);

1 Ответ

1 голос
/ 22 мая 2019

Ваш вопрос совершенно неясен. Похоже, что вы хотите, чтобы команда ассемблера перевела на соответствующий машинный код, но затем вы следите за своим кодом о том, как вы читаете входной файл.

Прежде всего, ваш код для чтения вашего файла input.asm фактически не читает файл. Вы создаете BufferdReader, но никогда не читаете из него (зачем тогда показывать код).

Во-вторых, машинный код может варьироваться от архитектуры к архитектуре, на которой вы собираетесь строить программу. Если вы имеете в виду, какой номер HEX соответствует вашей инструкции, вы можете создать хэш-карту, которая преобразуется из кода инструкции в соответствующий номер HEX.

В противном случае я бы порекомендовал найти IDE для сборки и проверить, есть ли в ней функция, которая отображает скомпилированную сборку в виде машинного кода. Или вы можете скомпилировать сборку самостоятельно и посмотреть машинный код скомпилированной программы, а затем автоматизировать его с помощью Java.

Надеюсь, что это помогло, если я не правильно понял ваш вопрос, пожалуйста, прокомментируйте или опубликуйте ответ.

...