ada - 在 Ada 中写入 BYTE 或字节数组

标签 ada

我正在 Ada 中为 Brainf*** 编写一个简单的编译器,但我在代码生成方面遇到了严重的问题,因此我无法正确地生成带有操作码指令的二进制文件,因为每当我写入文件时,它像整数一样保存十六进制值。 (整数大小)

我制作了一个我尝试制作的简单示例:

With Ada, Ada.Sequential_IO, Ada.Integer_Text_IO;
Use Ada;

procedure main is

   type Byte is range -128 .. 127;
   for  Byte'Size use 16;

   package Bin_IO is new Sequential_IO(Integer);
   File      : Bin_IO.File_Type;
   FileName  : constant String := "teste.bin";
   Num       : Byte;

begin
   Bin_IO.Create(File => File,
                 Name => FileName);

   Num := 16#FF#;        
   Bin_IO.Write(File => File,
                Item => Num);

   Bin_IO.Close(File => File);
end main;

文件中的预期结果只是FF,但是当我在十六进制编辑器中打开文件时,我有FF00 0000

如何正确保存操作码指令?

最佳答案

尝试将第 9 行更改为:

package Bin_IO is new Sequential_IO(Byte);

它将通用包更改为字节序列。 Bin_IO.Write 现在应该改为写入字节。

关于ada - 在 Ada 中写入 BYTE 或字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22662755/

相关文章:

ada - STM32F4 UART 半字寻址

string - Ada 用 Null 填充常量字符串

ada - 可访问性级别和本地过程变量的生命周期

string - 你如何编写一个程序,你可以在一个字符串中输入最多 5 个字符,但又少于 5 个(在 Ada 中)?

windows - pragma 导出函数在 Ada 可执行文件中不是外部的

c - 安全关键系统中的封装

cuda - 如何将 nvcc 与 gprbuild 一起使用?

builder - 尝试使 SCons Ada Builder 与 VariantDir 一起工作

c++ - 在 Ada95 中跨共享库/对象共享数据

Ada 95 编译器版本更改,存在转换问题