降级目标。豫
yuyan · 439 行 · 32977 字节 · UTF-8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439
寻观「标准库」之书。
寻观「编译器核心」之「网页汇编核心」之「模块结构」之书。
寻观「编译器核心」之「网页汇编核心」之「模块验证」之书。
寻观「裸机后端」之「整数降级」之书。
寻观「裸机后端」之「降级公用」之书。
「:文言:降级之目标,系统与指令之集也。系统定入口、导入入系统之途、内存增长之策、址式与可执行之式;指令之集定编码。裸机、Linux 与苹果共用同一名义地址之布:用户代码、元数据、线性内存、传参暂存、栈与动态之区。裸机与 Linux 以名义之址为实址;苹果位置无关,以全局基址为锚。汉语:寄存器降级的目标描述:操作系统 × 指令集。操作系统决定程序入口、导入如何进入系统(入口绑定表)、线性内存增长的策略、地址模式与可执行文件格式(裸机镜像、ELF 或 Mach-O);指令集决定机器编码。裸机、Linux 与 macOS 共用同一套名义地址布局(用户代码与元数据、线性内存、传参暂存、栈、动态区)。裸机与 Linux 直接用名义地址;macOS 必须位置无关,名义地址一律换成“全局基址寄存器 + 偏移”。:」
「降级系统」立「元类型」也。
「裸机系统」立「降级系统」也。
「Linux系统」立「降级系统」也。
「苹果系统」立「降级系统」也。
「降级目标」立「元类型」也。
「降级目标项」立化「降级系统」而化「爻」而「降级目标」也。
「:文言:臂为真者 ARM64,否则 AMD64。汉语:参数“臂”为真表示 ARM64,否则 AMD64。:」
「裸机目标」乃化「爻」而「降级目标」也。
「裸机目标」者会「臂」而
「降级目标项」于「裸机系统」于「臂」
也。
「Linux目标」乃化「爻」而「降级目标」也。
「Linux目标」者会「臂」而
「降级目标项」于「Linux系统」于「臂」
也。
「:文言:苹果之目标,位置无关,映像随机而移。汉语:macOS 目标:可执行文件必须位置无关,映像每次随机滑动。:」
「苹果目标」乃化「爻」而「降级目标」也。
「苹果目标」者会「臂」而
「降级目标项」于「苹果系统」于「臂」
也。
「目标臂」乃化「降级目标」而「爻」也。
「目标臂」者会「标」而
鉴「标」而
有「降级目标项」于「系」于「臂」则「臂」
也。
「目标是裸机」乃化「降级目标」而「爻」也。
「目标是裸机」者会「标」而
鉴「标」而
有「降级目标项」于「系」于「臂」则
(鉴「系」而
有「裸机系统」则「阳」
或有「其他」则「阴」)
也。
「目标是苹果」乃化「降级目标」而「爻」也。
「目标是苹果」者会「标」而
鉴「标」而
有「降级目标项」于「系」于「臂」则
(鉴「系」而
有「苹果系统」则「阳」
或有「其他」则「阴」)
也。
「:文言:址式依目标:苹果位置无关,以名义之全局基址为锚;余皆绝对。汉语:按目标取地址模式:macOS 为相对址式(锚是名义全局基址),裸机与 Linux 为绝对址式。:」
「目标址式」乃化「降级目标」而化「整数」而「址式」也。
「目标址式」者会「标」而会「全局基址」而
若「目标是苹果」于「标」则
「相对址式」于「全局基址」
否则
「绝对址式」
也。
「:文言:用户代码之始址。汉语:用户代码起始地址:ARM64 为 0x40200000,AMD64 为 0x200000。:」
「目标用户基址」乃化「降级目标」而「整数」也。
「目标用户基址」者会「标」而
若「目标臂」于「标」则
「一零七五八三八九七六」
否则
「二零九七一五二」
也。
「:文言:线性内存之始址。汉语:线性内存起始地址:ARM64 为 0x40300000,AMD64 为 0x300000。:」
「目标线性基址」乃化「降级目标」而「整数」也。
「目标线性基址」者会「标」而
若「目标臂」于「标」则
「一零七六八八七五五二」
否则
「三一四五七二八」
也。
「:文言:栈之顶,苹果增其栈,以容编译器深调用。汉语:用户栈顶:macOS arm64 为 0x42400000(栈约 32 MiB),其余 ARM64 为 0x40400000,AMD64 为 0x400000。栈下界(0x403D0000、0x3D0000)由函数序言检查。:」
「目标栈顶」乃化「降级目标」而「整数」也。
「目标栈顶」者会「标」而
若「目标是苹果」于「标」则
「一一一一四九零五六零」
否则若「目标臂」于「标」则
「一零七七九三六一二八」
否则
「四一九四三零四」
也。
「:文言:苹果之布:代码居映像之始后一千二十四字节;数据段始于映像之始后六十四兆字节,其间之隙不映,故代码之长不改锚距。数据段载元数据、页数、线性内存、传参暂存与栈,其后为导入之槽,再后为动态之区;诸名义之址同裸机之布。汉语:macOS 布局:代码在映像起址后 1024 字节;数据段固定从映像起址后 64 MiB 开始(中间不映射),因此代码长短不影响从代码到数据的距离。数据段依次是元数据、页数、线性内存、传参暂存与栈(名义地址与裸机相同),栈顶之上是导入槽(每个 8 字节,第零个留给 ___error),再往上按 16 KiB 对齐是动态区。:」
「苹果文本区」乃「整数」也。
「苹果文本区」者「六七一零八八六四」也。
「:文言:数据段名义之始:用户基址加段偏移,向下对齐于一万六千三百八十四。汉语:数据段的名义起址:元数据起址(全局基址)向下对齐到 16 KiB。:」
「苹果数据名义起址」乃化「降级目标」而化「整数」而「整数」也。
「苹果数据名义起址」者会「标」而会「全局基址」而
虑「基」者「目标用户基址」于「标」而
「加」于「基」于(「乘」于(「除以」于(「减」于「全局基址」于「基」)于「一六三八四」)于「一六三八四」)
也。
「:文言:锚距:自代码之始至全局基址之运行距离。汉语:锚距:运行时从代码起址到全局基址的距离 = 数据段偏移 − 1024 + 全局基址在数据段内的偏移。:」
「苹果锚距」乃化「降级目标」而化「整数」而「整数」也。
「苹果锚距」者会「标」而会「全局基址」而
「加」
于(「减」于「苹果文本区」于「一零二四」)
于(「减」于「全局基址」于(「苹果数据名义起址」于「标」于「全局基址」))
也。
「:文言:第若干导入槽之名义址,在栈顶之上。汉语:第 序 个导入槽的名义地址:栈顶 + 8 × 序。:」
「苹果导入槽址」乃化「降级目标」而化「整数」而「整数」也。
「苹果导入槽址」者会「标」而会「序」而
「加」于(「目标栈顶」于「标」)于(「乘」于「序」于「八」)
也。
「:文言:动态之区,在导入之槽之上,对齐于一万六千三百八十四;导入至多二千零四十七。汉语:macOS 动态区名义起址:栈顶之上 16 KiB(导入槽至多 2048 个,含 ___error)。:」
「苹果动态基址」乃化「降级目标」而「整数」也。
「苹果动态基址」者会「标」而
「加」于(「目标栈顶」于「标」)于「一六三八四」
也。
「:文言:线性内存逾八页,则迁于动态之区。汉语:线性内存超过八页后迁入的动态区起址:裸机与 Linux 的 ARM64 为 0x60000000,AMD64 为 0x8000000;macOS 见「苹果动态基址」。:」
「目标动态基址」乃化「降级目标」而「整数」也。
「目标动态基址」者会「标」而
若「目标是苹果」于「标」则
「苹果动态基址」于「标」
否则若「目标臂」于「标」则
「一六一零六一二七三六」
否则
「一三四二一七七二八」
也。
「:文言:导入之绑定:裸机者内核服务之号;Linux 者系统调用之号,并诸参之类,零为整数,一为线性内存之址(入系统前加线性基址);苹果者 libSystem 之函数,并诸参之类与转错之标。汉语:入口绑定:裸机导入绑定到内核服务号;Linux 导入绑定到本指令集的系统调用号,并给出每个参数的类别:零是整数(零扩展为六十四位),一是线性内存地址(进入系统前加上线性内存基址);macOS 导入绑定到 libSystem 函数(经导入槽调用),给出参数类别与是否把返回 -1 转成 -errno。:」
「导入绑定」立「元类型」也。
「服务绑定」立化「整数」而「导入绑定」也。
「系统调用绑定」立化「整数」而化(「列」于「整数」)而「导入绑定」也。
「库函数绑定」立化(「列」于「整数」)而化「爻」而「导入绑定」也。
「常量绑定」立化「整数」而「导入绑定」也。
「基址绑定」立化「整数」而「导入绑定」也。
「陷阱绑定」立「导入绑定」也。
「:文言:目标之号,同底层接口“取平台”之号:裸机一,Linux 二,苹果三。汉语:目标的平台号,与底层接口“取平台”的编号相同:裸机 1、Linux 2、macOS 3(Windows 将为 4)。:」
「目标平台号」乃化「降级目标」而「整数」也。
「目标平台号」者会「标」而
若「目标是裸机」于「标」则「一」
否则
若「目标是苹果」于「标」则「三」否则「二」
也。
「:文言:本目标之导入模块名:裸机平台,Linux 为 Linux,苹果为苹果。汉语:本目标自己的导入模块名:裸机为“平台”,Linux 为“Linux”,macOS 为“苹果”。:」
「本目标模块名」乃化「降级目标」而「字符串」也。
「本目标模块名」者会「标」而
若「目标是裸机」于「标」则『平台』
否则
若「目标是苹果」于「标」则『苹果』否则『Linux』
也。
「:文言:目标之内建导入,模块名目标:平台号者,诸目标皆绑为常量,程序以之择平台之途;内存基址低、内存基址高者,返线性内存基址之低高三十二位,以造系统所需之绝对指针(如 execve 之参数表)。汉语:目标内建导入(模块“目标”):“平台号”在每个目标上绑定为返回本目标平台号的常量桩,同一份程序(如执行器)据此在运行时选择平台实现;“内存基址低”“内存基址高”返回线性内存基址(ARM64 的 x28、AMD64 的 r9)的低、高 32 位,供程序拼出操作系统要求的绝对指针(如 execve 的参数指针表)。:」
「是目标内建导入」乃化「网页导入」而「爻」也。
「是目标内建导入」者会「项」而
「且」
于(「串相等」于(「项」中「零」)于『目标』)
于(「或者」
于(「串相等」于(「项」中「一」)于『平台号』)
于(「或者」
于(「串相等」于(「项」中「一」)于『内存基址低』)
于(「串相等」于(「项」中「一」)于『内存基址高』)))
也。
「:文言:他目标之导入,绑为陷阱:一份程序兼载诸平台之途,唯本目标之途真行。汉语:是否本目标自己的导入。其他目标的导入(如 Linux 程序里的“平台”导入)绑定为陷阱桩:同一份程序可以同时带着几个平台的实现,运行时只会走本目标那一支。:」
「是本目标导入」乃化「降级目标」而化「网页导入」而「爻」也。
「是本目标导入」者会「标」而会「项」而
「串相等」于(「项」中「零」)于(「本目标模块名」于「标」)
也。
「:文言:Linux 入口之表:名、臂之号、兼之号、诸参之类、结果之数。类者,零为整数(零扩),一为线性内存之址,二为有符号整数(符扩)。导入之模块名为 Linux,导入之名即系统调用之名。汉语:Linux 入口表:每行为 名称、ARM64 调用号、x86-64 调用号、参数类别列表、结果数。参数类别:0 整数(零扩展),1 线性内存地址(加线性基址),2 有符号整数(符号扩展,如 lseek 的偏移)。空指针参数(如 accept4 的地址)按整数 0 传。导入模块名为 Linux,导入名就是系统调用名。这是数据,不是代码;新增系统调用只加一行。至多六个参数。:」
「Linux入口表」乃
(「列」于(「字符串」合「整数」合「整数」合(「列」于「整数」)合「整数」))
也。
「Linux入口表」者
「列」【
『read』与「六三」与「零」与(「列」【「零」,「一」,「零」】)与「一」,
『write』与「六四」与「一」与(「列」【「零」,「一」,「零」】)与「一」,
『exit_group』与「九四」与「二三一」与(「列」【「零」】)与「零」,
『openat』与「五六」与「二五七」与(「列」【「零」,「一」,「零」,「零」】)与「一」,
『openat2』与「四三七」与「四三七」与(「列」【「零」,「一」,「一」,「零」】)与「一」,
『close』与「五七」与「三」与(「列」【「零」】)与「一」,
『dup3』与「二四」与「二九二」与(「列」【「零」,「零」,「零」】)与「一」,
『lseek』与「六二」与「八」与(「列」【「零」,「二」,「零」】)与「一」,
『pread64』与「六七」与「一七」与(「列」【「零」,「一」,「零」,「零」】)与「一」,
『pwrite64』与「六八」与「一八」与(「列」【「零」,「一」,「零」,「零」】)与「一」,
『fsync』与「八二」与「七四」与(「列」【「零」】)与「一」,
『fdatasync』与「八三」与「七五」与(「列」【「零」】)与「一」,
『ftruncate』与「四六」与「七七」与(「列」【「零」,「零」】)与「一」,
『fcntl』与「二五」与「七二」与(「列」【「零」,「零」,「零」】)与「一」,
『pipe2』与「五九」与「二九三」与(「列」【「一」,「零」】)与「一」,
『ppoll』与「七三」与「二七一」与(「列」【「一」,「零」,「一」,「零」】)与「一」,
『clock_gettime』与「一一三」与「二二八」与(「列」【「零」,「一」】)与「一」,
『clock_getres』与「一一四」与「二二九」与(「列」【「零」,「一」】)与「一」,
『getrandom』与「二七八」与「三一八」与(「列」【「一」,「零」,「零」】)与「一」,
『statx』与「二九一」与「三三二」与(「列」【「零」,「一」,「零」,「零」,「一」】)与「一」,
『getdents64』与「六一」与「二一七」与(「列」【「零」,「一」,「零」】)与「一」,
『mkdirat』与「三四」与「二五八」与(「列」【「零」,「一」,「零」】)与「一」,
『unlinkat』与「三五」与「二六三」与(「列」【「零」,「一」,「零」】)与「一」,
『renameat2』与「二七六」与「三一六」与(「列」【「零」,「一」,「零」,「一」,「零」】)与「一」,
『readlinkat』与「七八」与「二六七」与(「列」【「零」,「一」,「一」,「零」】)与「一」,
『ioctl』与「二九」与「一六」与(「列」【「零」,「零」,「一」】)与「一」,
『sched_getaffinity』与「一二三」与「二零四」与(「列」【「零」,「零」,「一」】)与「一」,
『socket』与「一九八」与「四一」与(「列」【「零」,「零」,「零」】)与「一」,
『bind』与「二零零」与「四九」与(「列」【「零」,「一」,「零」】)与「一」,
『listen』与「二零一」与「五零」与(「列」【「零」,「零」】)与「一」,
『accept4』与「二四二」与「二八八」与(「列」【「零」,「零」,「零」,「零」】)与「一」,
『connect』与「二零三」与「四二」与(「列」【「零」,「一」,「零」】)与「一」,
『shutdown』与「二一零」与「四八」与(「列」【「零」,「零」】)与「一」,
『getsockname』与「二零四」与「五一」与(「列」【「零」,「一」,「一」】)与「一」,
『setsockopt』与「二零八」与「五四」与(「列」【「零」,「零」,「零」,「一」,「零」】)与「一」,
『getsockopt』与「二零九」与「五五」与(「列」【「零」,「零」,「零」,「一」,「一」】)与「一」,
『clone』与「二二零」与「五六」与(「列」【「零」,「零」,「零」,「零」,「零」】)与「一」,
『execve』与「二二一」与「五九」与(「列」【「一」,「一」,「一」】)与「一」,
『fchdir』与「五零」与「八一」与(「列」【「零」】)与「一」,
『chdir』与「四九」与「八零」与(「列」【「一」】)与「一」,
『rt_sigaction』与「一三四」与「一三」与(「列」【「零」,「一」,「零」,「零」】)与「一」,
『kill』与「一二九」与「六二」与(「列」【「零」,「零」】)与「一」,
『wait4』与「二六零」与「六一」与(「列」【「零」,「一」,「零」,「零」】)与「一」,
『getpid』与「一七二」与「三九」与(「罄」授以「整数」)与「一」
】
也。
「Linux入口」乃
化「字符串」而
(「字符串」合「整数」合「整数」合(「列」于「整数」)合「整数」)
也。
「Linux入口」者会「名」而
递归虑「寻」其化(「列」于(「字符串」合「整数」合「整数」合(「列」于「整数」)合「整数」))而(「字符串」合「整数」
合「整数」合(「列」于「整数」)合「整数」)者会「们」而
鉴「们」而
有「罄」则「发生事故」
于(『Linux 入口表中没有此系统调用:』附「名」)
或有「缀」于「首」于「尾」则
若「串相等」于(「首」中「零」)于「名」则
「首」
否则
「寻」于「尾」
而
「寻」于「Linux入口表」
也。
「:文言:苹果入口之表:名、libSystem 之符号、诸参之类、结果之数、返负一时是否以 errno 之负代之。导入之模块名为苹果。汉语:macOS 入口表:每行为 导入名、libSystem 符号名、参数类别、结果数、是否把返回 -1 转成 -errno。参数类别:0 整数、1 线性内存地址、2 有符号整数、3 可变参数中的整数、4 可变参数中的地址(可变参数按 Apple ARM64 约定放在栈上)。导入模块名为“苹果”。这是数据;新增函数只加一行。:」
「苹果入口表」乃
(「列」于(「字符串」合「字符串」合(「列」于「整数」)合「整数」合「爻」))
也。
「苹果入口表」者
「列」【
『read』与『_read』与(「列」【「零」,「一」,「零」】)与「一」与「阳」,
『write』与『_write』与(「列」【「零」,「一」,「零」】)与「一」与「阳」,
『exit』与『_exit』与(「列」【「零」】)与「零」与「阴」,
『openat』与『_openat』与(「列」【「零」,「一」,「零」,「三」】)与「一」与「阳」,
『open』与『_open』与(「列」【「一」,「零」,「三」】)与「一」与「阳」,
『close』与『_close』与(「列」【「零」】)与「一」与「阳」,
『lseek』与『_lseek』与(「列」【「零」,「二」,「零」】)与「一」与「阳」,
『pread』与『_pread』与(「列」【「零」,「一」,「零」,「二」】)与「一」与「阳」,
『pwrite』与『_pwrite』与(「列」【「零」,「一」,「零」,「二」】)与「一」与「阳」,
『fsync』与『_fsync』与(「列」【「零」】)与「一」与「阳」,
『ftruncate』与『_ftruncate』与(「列」【「零」,「二」】)与「一」与「阳」,
『fcntl』与『_fcntl』与(「列」【「零」,「零」,「三」】)与「一」与「阳」,
『pipe』与『_pipe』与(「列」【「一」】)与「一」与「阳」,
『poll』与『_poll』与(「列」【「一」,「零」,「零」】)与「一」与「阳」,
『clock_gettime』与『_clock_gettime』与(「列」【「零」,「一」】)与「一」与「阳」,
『clock_getres』与『_clock_getres』与(「列」【「零」,「一」】)与「一」与「阳」,
『getentropy』与『_getentropy』与(「列」【「一」,「零」】)与「一」与「阳」,
『fstatat』与『_fstatat』与(「列」【「零」,「一」,「一」,「零」】)与「一」与「阳」,
『fstat』与『_fstat』与(「列」【「零」,「一」】)与「一」与「阳」,
『getdirentries64』与『___getdirentries64』与(「列」【「零」,「一」,「零」,「一」】)与「一」与「阳」,
『mkdirat』与『_mkdirat』与(「列」【「零」,「一」,「零」】)与「一」与「阳」,
『unlinkat』与『_unlinkat』与(「列」【「零」,「一」,「零」】)与「一」与「阳」,
『renameat』与『_renameat』与(「列」【「零」,「一」,「零」,「一」】)与「一」与「阳」,
『readlinkat』与『_readlinkat』与(「列」【「零」,「一」,「一」,「零」】)与「一」与「阳」,
『ioctl』与『_ioctl』与(「列」【「零」,「零」,「四」】)与「一」与「阳」,
『sysctl』与『_sysctl』与(「列」【「一」,「零」,「一」,「一」,「零」,「零」】)与「一」与「阳」,
『sysctlbyname』与『_sysctlbyname』与(「列」【「一」,「一」,「一」,「零」,「零」】)与「一」与「阳」,
『getcwd』与『_getcwd』与(「列」【「一」,「零」】)与「一」与「阴」,
『dup2』与『_dup2』与(「列」【「零」,「零」】)与「一」与「阳」,
『fork』与『_fork』与(「罄」授以「整数」)与「一」与「阳」,
『execve』与『_execve』与(「列」【「一」,「一」,「一」】)与「一」与「阳」,
『fchdir』与『_fchdir』与(「列」【「零」】)与「一」与「阳」,
『chdir』与『_chdir』与(「列」【「一」】)与「一」与「阳」,
『signal』与『_signal』与(「列」【「零」,「零」】)与「一」与「阴」,
『kill』与『_kill』与(「列」【「零」,「零」】)与「一」与「阳」,
『waitpid』与『_waitpid』与(「列」【「零」,「一」,「零」】)与「一」与「阳」,
『socket』与『_socket』与(「列」【「零」,「零」,「零」】)与「一」与「阳」,
『bind』与『_bind』与(「列」【「零」,「一」,「零」】)与「一」与「阳」,
『listen』与『_listen』与(「列」【「零」,「零」】)与「一」与「阳」,
『accept』与『_accept』与(「列」【「零」,「零」,「零」】)与「一」与「阳」,
『connect』与『_connect』与(「列」【「零」,「一」,「零」】)与「一」与「阳」,
『shutdown』与『_shutdown』与(「列」【「零」,「零」】)与「一」与「阳」,
『getsockname』与『_getsockname』与(「列」【「零」,「一」,「一」】)与「一」与「阳」,
『setsockopt』与『_setsockopt』与(「列」【「零」,「零」,「零」,「一」,「零」】)与「一」与「阳」,
『getsockopt』与『_getsockopt』与(「列」【「零」,「零」,「零」,「一」,「一」】)与「一」与「阳」,
『getpid』与『_getpid』与(「罄」授以「整数」)与「一」与「阴」
】
也。
「苹果入口」乃
化「字符串」而
(「字符串」合「字符串」合(「列」于「整数」)合「整数」合「爻」)
也。
「苹果入口」者会「名」而
递归虑「寻」其化(「列」于(「字符串」合「字符串」合(「列」于「整数」)合「整数」合「爻」))而(「字符串」合
「字符串」合(「列」于「整数」)合「整数」合「爻」)者会「们」而
鉴「们」而
有「罄」则「发生事故」
于(『苹果入口表中没有此函数:』附「名」)
或有「缀」于「首」于「尾」则
若「串相等」于(「首」中「零」)于「名」则
「首」
否则
「寻」于「尾」
而
「寻」于「苹果入口表」
也。
「:文言:苹果导入之验:模块名须为苹果,名在表中,签名合表。汉语:检查 macOS 导入:模块名须为“苹果”,名称在入口表中,参数数与结果数和表一致(至多八个参数)。:」
「苹果导入检」乃化「网页模块」而化「网页导入」而「有」也。
「苹果导入检」者会「模」而会「项」而
若「非」于(「串相等」于(「项」中「零」)于『苹果』)则
「发生事故」授以「有」于『macOS 目标只绑定“苹果”模块的导入』
否则
虑「行」者「苹果入口」于(「项」中「一」)而
虑「型」者
「网页取项」授以「网页签名」
于『平台类型』
于(「项」中「二」)
于(「模」中「零」)
而
虑「参数数」者「长度」授以「整数」于(「行」中「二」)而
若「大于」于「参数数」于「八」则
「发生事故」授以「有」于『macOS 导入参数过多』
否则若「且」于(「等于」于(「型」中「零」)于「参数数」)
于(「等于」于(「型」中「一」)于(「行」中「三」))则
「元」
否则
「发生事故」授以「有」于『macOS 导入签名与入口表不符』
也。
「:文言:导入之绑定,依目标而定:裸机之导入出自平台,Linux 之导入出自 Linux,苹果之导入出自苹果。汉语:按目标查导入的绑定。裸机导入须来自“平台”模块(见 整数降级 的服务号表);Linux 导入须来自“Linux”模块且名在入口表中;macOS 导入须来自“苹果”模块且名在入口表中。:」
「目标导入绑定」乃化「降级目标」而化「网页导入」而「导入绑定」也。
「目标导入绑定」者会「标」而会「项」而
若「是目标内建导入」于「项」则(
若「串相等」于(「项」中「一」)于『内存基址低』则
「基址绑定」于「零」
否则若「串相等」于(「项」中「一」)于『内存基址高』则
「基址绑定」于「一」
否则
「常量绑定」于(「目标平台号」于「标」)
)
否则若「非」于(「是本目标导入」于「标」于「项」)则
「陷阱绑定」
否则若「目标是裸机」于「标」则
「服务绑定」于(「裸机服务号」于「项」)
否则若「目标是苹果」于「标」则
(虑「行」者「苹果入口」于(「项」中「一」)而「库函数绑定」于(「行」中「二」)于(「行」中「四」))
否则若「非」于(「串相等」于(「项」中「零」)于『Linux』)则
「发生事故」授以「导入绑定」于『Linux 目标只绑定 Linux 模块的导入』
否则
虑「行」者「Linux入口」于(「项」中「一」)而
「系统调用绑定」于(若「目标臂」于「标」则「行」中「一」否则「行」中「二」)
于(「行」中「三」)
也。
「:文言:Linux 目标之入口:验函数之核,诸导入之签名须合入口之表,末取启动之函数。汉语:Linux 目标的启动函数号:验证函数核心,检查每个导入的参数数与结果数和入口表一致(至多六个参数,AMD64 至多四个),再找导出的“启动”。:」
「Linux函数入口」乃化「降级目标」而化「网页模块」而「整数」也。
「Linux函数入口」者会「标」而会「模」而
虑「检」者「验证网页函数核心」于「模」而
虑「入检」者
「态射」授以「网页导入」授以「有」
于(「模」中「一」)
于(会「项」而
若「非」于(「是本目标导入」于「标」于「项」)则「元」否则
虑「绑」者「目标导入绑定」于「标」于「项」
而
虑「行」者「Linux入口」于(「项」中「一」)
而
虑「型」者
「网页取项」授以「网页签名」
于『平台类型』
于(「项」中「二」)
于(「模」中「零」)
而
虑「参数数」者「长度」授以「整数」于(「行」中「三」)
而
若「大于」于「参数数」于(
若「目标臂」于「标」则「六」否则「六」)则
「发生事故」于『Linux 导入参数过多』
否则若「且」于(「等于」于(「型」中「零」)于「参数数」)
于(「等于」于(「型」中「一」)于(「行」中「四」))则
「元」
否则
「发生事故」于『Linux 导入签名与入口表不符』
)
而
「模块启动号」于「模」
也。
「苹果函数入口」乃化「网页模块」而「整数」也。
「苹果函数入口」者会「模」而
虑「检」者「验证网页函数核心」于「模」而
虑「入检」者
「态射」授以「网页导入」授以「有」
于(「模」中「一」)
于(会「项」而若「串相等」于(「项」中「零」)于『苹果』则「苹果导入检」于「模」于「项」否则「元」)
而
「模块启动号」于「模」
也。
「:文言:依目标取启动之函数号。汉语:按目标取启动函数号(含导入检查)。:」
「目标函数入口」乃化「降级目标」而化「网页模块」而「整数」也。
「目标函数入口」者会「标」而会「模」而
若「目标是裸机」于「标」则
「裸机函数入口」于「模」
否则若「目标是苹果」于「标」则
「苹果函数入口」于「模」
否则
「Linux函数入口」于「标」于「模」
也。
「:文言:苹果之导入槽所绑之符号,依槽序:第零为 ___error,其后依导入之序。汉语:macOS 导入槽要绑定的符号,按槽序排列:第 0 个是 ___error,其后按模块导入的顺序。:」
「苹果槽符号们」乃化「网页模块」而(「列」于「字符串」)也。
「苹果槽符号们」者会「模」而
「缀」
于『___error』
于(「态射」授以「网页导入」授以「字符串」
于(「模」中「一」)
于(会「项」而若「串相等」于(「项」中「零」)于『苹果』则(「苹果入口」于(「项」中「一」))中「一」否则『』))
也。