Fix: file write syscall to correctly output raw binary data #410
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously, the RISC-V write syscall in Ripes interpreted memory content as a QString, which implicitly assumes UTF-8 encoding. This caused incorrect output when writing binary data, particularly when bytes had values above 127 (0x7F).
In UTF-8, codepoints above 127 are encoded using multiple bytes. For example, the byte 0xA0 is encoded in UTF-8 as the two-byte sequence 0xC2 0xA0. As a result, using QString for raw memory meant that writing a single byte from memory could result in multiple unintended bytes being emitted to the output stream.
This PR replaces the use of QString with QByteArray, ensuring that the written data is treated as a raw byte buffer rather than UTF-8 encoded text. This change preserves the exact memory contents intended by the simulated program, enabling correct output through the write syscall.