diff --git a/src/backend/Assembly.zig b/src/backend/Assembly.zig index ec9d671034bd211f4d1064014b7bca08927052e0..b58247380c4b854a82502d3adbd4a3f30e581837 100644 --- a/src/backend/Assembly.zig +++ b/src/backend/Assembly.zig @@ -6,12 +6,34 @@ text: []const u8, const Assembly = @This(); +/// 释放Assembly对象占用的内存 +/// +/// 释放由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 { +/// 将汇编的data段和text段写入文件 +/// +/// 使用writevAll系统调用一次性写入数据段和代码段, +/// 保持数据的原始顺序(先data后text) +/// +/// Parameters: +/// - self: Assembly对象(按值传递) +/// - file: 目标文件句柄 +/// +/// Returns: +/// - void: 写入成功 +/// - error: 文件写入相关的错误 +/// +/// Error Conditions: +/// - 文件写入失败时返回错误 +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 },