diff --git a/src/backend/Assembly.zig b/src/backend/Assembly.zig index ec9d671034bd211f4d1064014b7bca08927052e0..3663fa76e4ffad5e0aa9a78347dd560cc0ea5400 100644 --- a/src/backend/Assembly.zig +++ b/src/backend/Assembly.zig @@ -6,12 +6,22 @@ text: []const u8, const Assembly = @This(); +/// 释放Assembly对象持有的内存资源 +/// 负责释放data和text字段分配的内存 +/// @param self Assembly对象的常量指针 +/// @param 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的数据和文本段写入文件 +/// 使用writev系统调用一次性写入data和text两个段,减少系统调用次数 +/// @param self Assembly对象的拷贝(按值传递) +/// @param file 目标文件句柄 +/// @return void 成功时返回,失败时返回错误 +/// @error 返回可能的文件写入错误 +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 },