У меня проблемы с чтением двоичного файла в 32-битное беззнаковое целое число и печатью его в выходной файл.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 У меня проблемы с чтением двоичного файла в 32-битное беззнаковое целое число и печатью его в выходной файл.

Сообщение Anonymous »

Я работаю над проектом для класса компьютерной архитектуры, где мы изучаем MIPS и язык ассемблера. Программа принимает на вход .bin и выводит .txt. Мне нужно взять двоичный исполняемый файл MIPS, который выглядит следующим образом:

Код: Выделить всё

00000000010000000000000000000000
00010000000000010000000000000000
01111111111111111110111111111100
00000000000000000000000000000011
00000000000000000000000000000001
00000000000000000000000000000010
00000000000000000000000000000011
00111100000000010001000000000001
00110100001010000000000000000000
00100100000010010000000000000011
00100100000010100000000000000000
00010001010010010000000000000110
10001101000010110000000000000000
00100011101111011111111111111100
10101111101010110000000000000000
00100001000010000000000000000100
00100001010010100000000000000001
00001000000100000000000000000100
00111100000000010001000000000001
00110100001010000000000000000000
00100100000011000000010011010010
10101101000011000000000000000100
00100100000000100000000000001010
00000000000000000000000000001100
И декодируйте его, чтобы создать удобочитаемый файл .txt на языке ассемблера, который выглядит следующим образом:

Код: Выделить всё

initialPC: 4194304
dataStartAddress: 268500992
initialStackPointer: 2147479548
Number of data items: 3
268500992:  00000000000000000000000000000001    1
268500996:  00000000000000000000000000000010    2
268501000:  00000000000000000000000000000011    3
4194304:    00111100000000010001000000000001    lui $at, 4097
4194308:    00110100001010000000000000000000    ori $t0, $at, 0
4194312:    00100100000010010000000000000011    addiu $t1, $zero, 3
4194316:    00100100000010100000000000000000    addiu $t2, $zero, 0
4194320:    00010001010010010000000000000110    beq $t2, $t1, 6
4194324:    10001101000010110000000000000000    lw $t3, 0($t0)
4194328:    00100011101111011111111111111100    addi $sp, $sp, -4
4194332:    10101111101010110000000000000000    sw $t3, 0($sp)
4194336:    00100001000010000000000000000100    addi $t0, $t0, 4
4194340:    00100001010010100000000000000001    addi $t2, $t2, 1
4194344:    00001000000100000000000000000100    j 4194320
4194348:    00111100000000010001000000000001    lui $at, 4097
4194352:    00110100001010000000000000000000    ori $t0, $at, 0
4194356:    00100100000011000000010011010010    addiu $t4, $zero, 1234
4194360:    10101101000011000000000000000100    sw $t4, 4($t0)
4194364:    00100100000000100000000000001010    addiu $v0, $zero, 10
4194368:    00000000000000000000000000001100    syscall
Поскольку двоичный исполняемый файл MIPS сбрасывается в двоичный текстовый файл, я успешно создал программу, которая преобразует .txt в .bin, которая передает разницу с .bin, который мой инструктор включил в материалы проекта с помощью этого сообщества в предыдущем вопросе.
В настоящее время я решаю проблему с правильной печатью каждого слова. Вот выходной файл моей программы на данный момент:

Код: Выделить всё

initialPC: 16384
dataStartAddress: 272
initialStackPointer: 4243586943
Number of data items: 50331648
16777216
33554432
50331648
17826108
10292
50333988
2596
100682001
2957
4244618531
43951
67110945
16796193
67112968
17826108
10292
3523480612
67112109
167772708
201326592
Очевидно, что я делаю что-то не так, поэтому мне нужна помощь, объясняющая, что я сделал не так и как это исправить. Мой инструктор просто ожидает, что мы создадим всю эту программу с использованием ИИ, и я с этим не согласен. Если идти по длинному пути, возможно, придется больше работать с моей стороны, но я иду в школу, чтобы научиться программировать, а не создавать подсказки.
Вот мой код на данный момент:

Код: Выделить всё

#include 
#include 
#include 

using namespace std;

int main(int argc, char* argv[])
{
// input error check the proper amount of command arguments
if (argc != 3) {
cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/79899108/i-have-problems-reading-a-binary-file-into-a-32-bit-unsigned-int-and-printing-th[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»