我正在 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/