From e1ed7ffd9ffd0e16ea1c4770f8301d71d8caacba Mon Sep 17 00:00:00 2001 From: git <593+git@user.noreply.gitee.com> Date: Wed, 6 Aug 2025 02:08:47 +0000 Subject: [PATCH 1/2] update src/backend/Assembly.zig. Signed-off-by: git <593+git@user.noreply.gitee.com> --- src/backend/Assembly.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/Assembly.zig b/src/backend/Assembly.zig index ec9d671..914bffb 100644 --- a/src/backend/Assembly.zig +++ b/src/backend/Assembly.zig @@ -11,7 +11,7 @@ pub fn deinit(self: *const Assembly, gpa: Allocator) void { gpa.free(self.text); } -pub fn writeToFile(self: Assembly, file: std.fs.File) !void { +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 }, -- Gitee From a684d8a8ba0872a99e312326f0fa363a3fe88802 Mon Sep 17 00:00:00 2001 From: git Date: Fri, 23 Jan 2026 09:31:31 +0000 Subject: [PATCH 2/2] =?UTF-8?q?docs:=20=E4=B8=BAAssembly.zig=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=96=87=E6=A1=A3=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为src/backend/Assembly.zig中的deinit和writeToAllFile函数添加完整的文档注释,包括: - 函数功能描述 - 参数说明 - 返回值说明 - 错误处理信息 - 使用注意事项 --- src/backend/Assembly.zig | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/backend/Assembly.zig b/src/backend/Assembly.zig index 914bffb..0844b71 100644 --- a/src/backend/Assembly.zig +++ b/src/backend/Assembly.zig @@ -1,16 +1,56 @@ const std = @import("std"); const Allocator = std.mem.Allocator; +/// Assembly结构体包含编译后的汇编代码数据 +/// data字段存储二进制数据,text字段存储汇编文本 data: []const u8, text: []const u8, const Assembly = @This(); +/// 释放Assembly对象占用的内存 +/// 使用提供的分配器释放data和text字段 +/// +/// ## 参数 +/// - `self`: 指向const Assembly的指针,包含要释放的数据 +/// - `gpa`: 通用分配器,用于释放内存 +/// +/// ## 行为 +/// - 释放Assembly.data指向的内存 +/// - 释放Assembly.text指向的内存 +/// - 假设data和text都是通过同一个分配器分配的 +/// +/// ## 注意事项 +/// - 此函数不会修改原始的data和text切片值 +/// - 确保在调用此函数后不再使用已释放的内存 +/// - 建议在释放前检查指针是否为null(Zig会自动处理) pub fn deinit(self: *const Assembly, gpa: Allocator) void { gpa.free(self.data); gpa.free(self.text); } +/// 将Assembly的data和text字段写入到文件中 +/// 使用writev系统调用一次性写入两个缓冲区,保证原子性 +/// +/// ## 参数 +/// - `self`: Assembly实例,包含要写入的数据 +/// - `file`: 目标文件,必须是可写的std.fs.File +/// +/// ## 行为 +/// - 首先写入data字段的二进制数据 +/// - 然后写入text字段的汇编文本 +/// - 使用writevAll确保原子写入操作 +/// +/// ## 返回值 +/// - `void`: 成功时无返回值 +/// - `error`: 返回文件系统操作可能产生的错误 +/// +/// ## 可能的错误 +/// - `error.InputOutput`: I/O操作失败 +/// - `error.BrokenPipe`: 管道损坏 +/// - `error.SystemResources`: 系统资源不足 +/// - `error.AccessDenied`: 权限不足 +/// - `error.NotOpenForWriting`: 文件未以写入模式打开 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 }, -- Gitee