diff --git a/src/backend/Assembly.zig b/src/backend/Assembly.zig index ec9d671034bd211f4d1064014b7bca08927052e0..9a9a238e110a1349f932ef859e1d9bfae3c4c881 100644 --- a/src/backend/Assembly.zig +++ b/src/backend/Assembly.zig @@ -6,15 +6,39 @@ text: []const u8, const Assembly = @This(); +/// 释放Assembly实例分配的内存资源 +/// +/// 释放data和text字段所占用的内存空间 +/// +/// Parameters: +/// - self: Assembly实例的常量指针 +/// - gpa: 全局内存分配器,用于释放内存 pub fn deinit(self: *const Assembly, gpa: Allocator) void { gpa.free(self.data); gpa.free(self.text); } -pub fn writeToFile(self: Assembly, file: std.fs.File) !void { +/// 将汇编代码数据写入文件 +/// +/// 将Assembly实例的data和text数据写入指定的文件描述符 +/// data和text字段会被写入到同一个iovec数组中,实现原子性写入操作 +/// +/// Parameters: +/// - self: Assembly实例的值拷贝 +/// - file: 目标文件描述符,必须具有写权限 +/// +/// Returns: +/// void 成功写入时返回void +/// +/// Errors: +/// - error.InputOutput: 发生I/O错误时返回 +/// - error.BrokenPipe: 管道断开连接时返回 +/// - error.SystemResources: 系统资源不足时返回 +/// - error.FileDescriptorNotOpen: 文件描述符未打开时返回 +pub fn writeToAllFile(self: Assembly, file: std.fs.File) !void { var vec: [2]std.posix.iovec_const = .{ .{ .base = self.data.ptr, .len = self.data.len }, .{ .base = self.text.ptr, .len = self.text.len }, }; - return file.writevAll(&vec); + return file.writeAll(&vec); }