如何写一个自己的网站网站网上商城制作

张小明 2026/1/10 6:53:36
如何写一个自己的网站,网站网上商城制作,如何备案域名,wordpress文章多密码链接#xff1a;Box86 / Box64 – Linux Userspace x86 and x86_64 Emulator with a Twist 没错…又是为了玩游戏看的代码 或许有人问博主博主泥这三天没看项目代码干什么去了 玩游戏去了…#x1f617; 前文传送#xff1a; [游戏设计原理_1] 对称性和同步性 | 合作与对抗…链接Box86 / Box64 – Linux Userspace x86 and x86_64 Emulator with a Twist没错…又是为了玩游戏看的代码 或许有人问博主博主泥这三天没看项目代码干什么去了 玩游戏去了…前文传送[游戏设计原理_1] 对称性和同步性 | 合作与对抗 | 公平 | 反馈循环[游戏实时地图] 地图数据 | 兴趣点数据 | 虚幻引擎SDK接口[shad-PS4] Vulkan渲染器 | 着色器_重新编译器 | SPIR-V 格式…more (随手贴了三篇并没有什么规律不多说了 我们来看这个项目 (明天的话我应该会去尝试fix一个issue要是成功了窝就写篇文章 失败了就当没做过…docsbox64box64是一个用于弥合不同CPU 架构之间的差距的项目通过智能处理 C 源文件来实现这一目标以生成专用的包装器代码。这些包装器充当中间层使为一个系统构建的应用程序能够在另一个系统上无缝执行有效地促进跨架构仿真。可视化章节机器架构配置C 类型系统表示日志记录和错误报告预处理器指令处理宏系统C 代码解析包装器代码生成逻辑(后续章节包括这篇文章的.md博客都更新在github下了)第 1 章机器架构配置欢迎来到探索 Box64 内部工作原理之旅的第一章Box64 是一个令人惊叹的工具允许我们在 ARM64 计算机如树莓派或 Apple Silicon Mac上运行为 x86_64 计算机如大多数台式 PC设计的应用程序。为了实现这一魔法Box64 需要理解这些截然不同的计算机架构之间的细微差异。挑战不同的计算机架构想象一下我们有一个蛋糕的配方。这个配方假设我们有特定的烤箱、某些量杯和标准尺寸的配料。现在如果我们试图在一个完全不同的厨房中使用该配方会怎样也许烤箱的加热方式不同我们的量杯尺寸不同或者某些配料具有意想不到的特性。我们需要一个指南来将原始配方转换到我们的新厨房。在计算机世界中CPU 架构就像那个厨房。它定义了计算机大脑CPU如何工作、如何存储信息以及如何执行计算的基本规则。Box64 正面应对这一挑战它需要在另一个厨房例如 ARM64中运行为一个厨房例如 x86_64编写的程序。Box64 通过机器架构配置解决的核心问题就是这种转换。它需要知道程序构建时原始架构的确切规则即使在不同的主机架构上运行也是如此。用例long double的大小是多少让我们考虑一个常见的编程任务查找数据类型的大小。在 C 编程中我们可能会使用sizeof(long double)来查看long double数字在内存中占用多少字节。问题在哪里这个大小不是固定的在较旧的 x8632 位系统上long double可能是 12 字节。在现代 x86_6464 位系统上它通常是 16 字节。在 ARM64 系统上它也通常是 16 字节但其内部结构可能略有不同。如果 Box64 在 ARM64 机器上运行 x86_64 程序并且该程序请求sizeof(long double)Box64 必须报告16 字节而不是 ARM64 的原生大小即使在这种特定情况下它们恰好相同。它必须模拟目标x86_64 系统的行为。这对于正确的程序执行至关重要。Box64 如何管理架构规则Box64 使用称为机器架构配置的抽象来跟踪这些架构规则。就像为它需要支持的每种 CPU 类型提供详细的说明手册。machine_t蓝图Box64 将这些规则存储在一个名为machine_t的特殊结构中将machine_t视为特定 CPU 架构的配置文件或数据表。每个配置文件都包含关键特征。让我们看一下来自wrapperhelper/src/machine.h的这个蓝图// wrapperhelper/src/machine.htypedefstructmachine_s{size_tsize_long;// long 整数的大小例如4 或 8 字节size_talign_longdouble;// long double 的内存对齐size_tsize_longdouble;// long double 的大小例如12 或 16 字节size_talign_valist;// 可变参数列表的内存对齐size_tsize_valist;// 可变参数列表的大小_Boolhas_int128;// 此架构是否支持 128 位整数_Boolunsigned_char;// char 默认是无符号的吗// ... 其他架构细节 ...}machine_t;这个machine_t结构保存数值这些数值定义了基本数据类型和其他 C 语言构造在特定 CPU 架构上的行为方式。例如size_longdouble告诉 Box64 该特定机器的long double应该有多大。Box64 如何使用machine_t配置文件当 Box64 遇到它试图理解的程序中的类型如我们的long double示例时它会查询目标架构的machine_t配置文件。这确保 Box64 完全按照原始编译器的方式计算大小和内存布局保持兼容性。(还是我们再加一层的 抽象统一思想)validate_type函数我们稍后会简化并看到是应用这些架构规则的主要位置之一负责根据所选的machine_t配置文件确定每个 C 类型的正确大小和对齐。逐步获取long double大小让我们追踪 Box64 如何为 x86_64 程序确定long double的大小程序请求x86_64 程序的代码通过 Box64 运行时到达需要知道sizeof(long double)的点。Box64 解析器Box64 的内部解析器读取 C 代码结构拦截此请求。它知道它正在处理 x86_64 程序。C 类型系统然后解析器向 Box64 的 C 类型系统表示负责理解 C 数据类型询问特定于 x86_64 架构的long double的详细信息。机器配置C 类型系统反过来查询机器架构配置我们的machine_t配置文件以获取 x86_64 配置文件的size_longdouble和align_longdouble值。数据检索machine_x86_64配置文件提供其特定值例如大小为 16 字节对齐为 16 字节。结果返回程序然后 Box64 将这个 16 字节的大小提供回正在执行的 x86_64 程序确保它的行为就像在原生 x86_64 机器上运行一样。底层实现实现机器配置Box64 为它支持的架构预定义了这些machine_t配置文件。让我们看看这在代码中是如何完成的。声明机器配置文件在wrapperhelper/src/machine.c中我们会找到每个支持的架构的全局变量// 简化自 wrapperhelper/src/machine.cmachine_tmachine_x86_64;// 64 位 x86 架构的配置文件machine_tmachine_x86;// 32 位 x86 架构的配置文件machine_tmachine_aarch64;// 64 位 ARM 架构的配置文件这些是准备填充架构规则的空数据表。初始化配置文件当 Box64 启动时init_machines函数用每个架构的正确值填充这些machine_t变量。注意 x86 和 x86_64 之间long double的不同值// 简化自 wrapperhelper/src/machine.cintinit_machines(size_tnpaths,constchar*const*extra_include_path){// ... x86_64 的设置 ...#defineCUR_MACHINEx86_64machine_x86_64.size_long8;machine_x86_64.align_longdouble16;machine_x86_64.size_longdouble16;// x86_64 long double 是 16 字节machine_x86_64.align_valist8;machine_x86_64.size_valist24;machine_x86_64.has_int1281;// x86_64 有 128 位整数// ... 包含路径设置 ...#undefCUR_MACHINE// ... x86 的设置 ...#defineCUR_MACHINEx86machine_x86.size_long4;machine_x86.align_longdouble4;machine_x86.size_longdouble12;// x86 long double 是 12 字节machine_x86.align_valist4;machine_x86.size_valist4;machine_x86.has_int1280;// x86 通常没有 128 位整数// ... 包含路径设置 ...#undefCUR_MACHINE// ... aarch64 的设置 ...#defineCUR_MACHINEaarch64machine_aarch64.size_long8;machine_aarch64.align_longdouble16;machine_aarch64.size_longdouble16;// AArch64 long double 是 16 字节machine_aarch64.align_valist8;machine_aarch64.size_valist32;machine_aarch64.has_int1281;// AArch64 有 128 位整数machine_aarch64.unsigned_char1;// char 在 AArch64 上默认是无符号的// ... 包含路径设置 ...#undefCUR_MACHINEreturn1;// 成功}这个代码片段清楚地显示了特定属性如long double的大小或是否支持__int128如何为每个架构进行不同配置。这种精确配置对于准确仿真至关重要。还要注意char在 x86/x86_64 上默认是有符号的但在 AArch64 上是无符号的。使用validate_type应用配置validate_type函数是使用这些配置值的地方。当 Box64 需要确定类型的实际大小和对齐时它会将目标架构的machine_t配置文件传递给此函数。// 简化自 wrapperhelper/src/machine.cintvalidate_type(loginfo_t*loginfo,machine_t*target,type_t*typ){// ... 检查和验证 ...// 此 switch 语句处理不同的 C 内置类型switch(typ-typ){caseTYPE_BUILTIN:switch(typ-val.builtin){// ... char、int、float 等的情况 ...caseBTT_LONGDOUBLE:// 处理 long double 时caseBTT_ILONGDOUBLE:// 直接从目标机器的配置文件获取大小和对齐typ-szinfo.aligntarget-align_longdouble;typ-szinfo.sizetarget-size_longdouble;return1;// 成功验证caseBTT_VA_LIST:// 同样适用于 va_listtyp-szinfo.aligntarget-align_valist;typ-szinfo.sizetarget-size_valist;return1;caseBTT_INT128:// 检查 128 位整数支持caseBTT_SINT128:caseBTT_UINT128:if(!target-has_int128){// 如果目标机器没有 __int128log_error(loginfo,target does not have type __int128\n);typ-szinfo.aligntyp-szinfo.size0;return0;// 错误}// 如果有继续设置 size/align/* FALLTHROUGH */caseBTT_FLOAT128:caseBTT_IFLOAT128:typ-szinfo.aligntyp-szinfo.size16;return1;// ... 其他类型 ...}// ... 其他类型类别数组、指针、结构、函数...}return0;// 失败}这个代码片段演示了validate_type如何直接使用target-align_longdouble和target-size_longdouble值来为long double类型分配正确的大小和对齐确保仿真程序看到它期望的大小。它还检查目标架构是否甚至支持像__int128这样的类型。预处理器定义除了machine_t结构之外Box64 还提供特定于架构的预处理器定义。这些就像编译器使用的全局常量。Box64 包含特定于每个架构的文件如stdc-predef.h例如wrapperhelper/include-override/x86_64/stdc-predef.h。这些文件定义了通常在原生系统上存在的宏。这里是一瞥// 简化自 wrapperhelper/include-override/x86_64/stdc-predef.h#define__SIZEOF_LONG__8#define__SIZEOF_POINTER__8#define__SIZEOF_LONG_DOUBLE__16// x86_64 特定// ... 更多特定于架构的定义 ...// 简化自 wrapperhelper/include-override/x86/stdc-predef.h#define__SIZEOF_LONG__4// x86 不同#define__SIZEOF_POINTER__4// x86 不同#define__SIZEOF_LONG_DOUBLE__12// x86 不同// ...这些宏确保如果仿真程序依赖于预定义常量如__SIZEOF_LONG_DOUBLE__许多编译器提供Box64 会为目标架构提供正确的值。结论在本章中我们探讨了 Box64 中的机器架构配置。了解到不同的 CPU 架构在数据类型大小、对齐和其他特性方面有不同的规则。Box64 通过为它支持的每个架构维护machine_t配置文件来解决这个问题就像架构规则的字典一样。这使 Box64 能够准确模拟目标系统的行为即使在不同的主机上运行也是如此。对 Box64 如何为不同架构配置自身的这一基本理解对于其核心功能至关重要。接下来我们将探讨 Box64 如何使用这些架构规则来构建对 C 数据类型本身的全面理解详见 C 类型系统表示。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

iis网站正在建设中WordPress怎么去掉底部

论文修改完成后,就进入了最终的投稿环节。现在期刊投稿量大,审稿时间长,投稿难度大,所以我们争取在第一次投稿时,就能选到与论文选题契合的期刊,以提升投稿的成功率。 这个时候,如果还去网上手动找资料,对比各个期刊是否契合自己的选题,就会非常浪费时间。那么就可以…

张小明 2026/1/10 3:26:09 网站建设

网页的依托网站广告公司创意广告语

百度网盘API终极指南:Python自动化神器完整教程 【免费下载链接】baidupcsapi 百度网盘api 项目地址: https://gitcode.com/gh_mirrors/ba/baidupcsapi 百度网盘API是一个强大的Python工具库,专门用于实现百度网盘文件的自动化管理。通过简单的AP…

张小明 2026/1/10 3:19:39 网站建设

h5制作网站哪个好做团购网站有什么难处

一、市场现状:千亿规模下的机遇与挑战​2025 年盲盒抽赏市场规模预计突破 1200 亿元,小程序渠道占比超 60%,成为核心增长引擎。核心用户聚焦 14-30 岁年轻群体,女性占比超 60%,二次元、潮玩收藏是主要消费场景。但行业…

张小明 2026/1/10 4:35:01 网站建设

天津市建设银行租房网站动漫与游戏制作专业就业方向

随着大模型和 AI 智能体技术的快速发展,向量数据库作为支撑技术栈的重要基础设施,正在成为开发者必须掌握的工具。 在上下文工程(Context Engineering)的实践中,向量数据库扮演着关键角色。上下文工程的核心在于为大模…

张小明 2026/1/10 5:13:54 网站建设

网站的域名和空间威海建设局网站楼盘信息公布

本文只针对25.4.30版本的EGSTalker仓库 一、环境配置 因为一直习惯于把项目zip拉下来上传服务器所以遇到了第一个问题,在服务器上没有办法执行这条指令(本地执行了也没效果不知道为啥) git submodule update --init --recursive解决方法&…

张小明 2026/1/10 6:05:05 网站建设

东营有网站网页制作模板主题

Windows驱动管理终极指南:5步彻底解决驱动存储区问题 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 还在为Windows系统驱动冗余、设备故障和磁盘空间不足而烦恼吗&a…

张小明 2026/1/10 6:24:13 网站建设