臂加寄
公开化「整数」而化「整数」而化「整数」而「机器片」文言:臂之指令,以寄存器与立即数计其字,不假汇编器。汉语:ARM64 指令编码器。每个函数返回一个 四字节 机器片或机器片列表;寄存器号零至三十,三十一在支持处表示栈指针。所有字节均由 llvm-mc 生成的参考编码核对,见「臂汇编。测试。豫」。 add 目,甲,乙
包说明.html模块 / 73
臂汇编。豫
化「整数」而化「整数」而化「整数」而「机器片」文言:臂之指令,以寄存器与立即数计其字,不假汇编器。汉语:ARM64 指令编码器。每个函数返回一个 四字节 机器片或机器片列表;寄存器号零至三十,三十一在支持处表示栈指针。所有字节均由 llvm-mc 生成的参考编码核对,见「臂汇编。测试。豫」。 add 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」sub 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」and 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」orr 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」eor 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」mul 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」udiv 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」sdiv 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」lsl 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」lsr 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」asr 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」ror 目,甲,乙
化「整数」而化「整数」而化「整数」而「机器片」add 目,甲,乙
化「整数」而化「整数」而「机器片」cmp wA, wB
化「整数」而化「整数」而「机器片」cmp xA, xB
化「整数」而化「整数」而「机器片」cmp wA, #imm12
化「整数」而化「整数」而化「整数」而「机器片」add w0, w0, #0
化「整数」而化「整数」而化「整数」而「机器片」sub w0, w0, #0
化「整数」而化「整数」而化「整数」而「机器片」add x0, x0, #0
化「整数」而化「整数」而化「整数」而「机器片」sub x0, x0, #0
化「整数」而化「整数」而「机器片」mov wD, wS
化「整数」而化「整数」而「机器片」文言:sxtw xD, wS:取低三十二位,依符号扩为六十四位。汉语:sxtw xD, wS(即 sbfm xD, xS, #0, #31):把低 32 位按符号扩展成 64 位。
「机器片」文言:brk #0:于 Linux 与苹果,发断点之信号而终其进程。汉语:brk #0:在 Linux 与 macOS 上触发 SIGTRAP、结束进程(裸机用 svc #7 的「臂陷阱」)。
「机器片」文言:线性内存基址之低高:mov w0, w28 与 lsr x0, x28, #32。汉语:取线性内存基址(x28)的低 32 位(mov w0, w28)与高 32 位(lsr x0, x28, #32)。
「机器片」暂无说明。
化「整数」而化「整数」而「机器片」mov xD, xS
化「整数」而化「整数」而化「整数」而化「整数」而「机器片」msub wD, wA, wB, wC(D = C - A*B)
化「整数」而化「整数」而化「整数」而化「整数」而「机器片」csel wD, wA, wB, cond
化「整数」而化「整数」而「机器片」cset wD, cond(编码用相反条件)
化「整数」而化「整数」而化「整数」而「机器片」ldr w0, [x0, #0]
化「整数」而化「整数」而化「整数」而「机器片」str w0, [x0, #0]
化「整数」而化「整数」而化「整数」而「机器片」ldr x0, [x0, #0]
化「整数」而化「整数」而化「整数」而「机器片」str x0, [x0, #0]
化「整数」而化「整数」而化「整数」而「机器片」ldrb w0, [x0, #0]
化「整数」而化「整数」而化「整数」而「机器片」ldrsb w0, [x0, #0]
化「整数」而化「整数」而化「整数」而「机器片」strb w0, [x0, #0]
化「整数」而化「整数」而化「整数」而「机器片」ldrh w0, [x0, #0]
化「整数」而化「整数」而化「整数」而「机器片」ldrsh w0, [x0, #0]
化「整数」而化「整数」而化「整数」而「机器片」strh w0, [x0, #0]
化「整数」而化「整数」而化「整数」而「机器片」ldr w0, [x0, x0]
化「整数」而化「整数」而化「整数」而「机器片」ldrb w0, [x0, x0]
化「整数」而化「整数」而化「整数」而「机器片」ldrsb w0, [x0, x0]
化「整数」而化「整数」而化「整数」而「机器片」ldrh w0, [x0, x0]
化「整数」而化「整数」而化「整数」而「机器片」ldrsh w0, [x0, x0]
化「整数」而化「整数」而化「整数」而「机器片」str w0, [x0, x0]
化「整数」而化「整数」而化「整数」而「机器片」strb w0, [x0, x0]
化「整数」而化「整数」而化「整数」而「机器片」strh w0, [x0, x0]
化「整数」而化「整数」而化「整数」而化「整数」而「机器片」stp x0, x0, [x0, #0]
化「整数」而化「整数」而化「整数」而化「整数」而「机器片」ldp x0, x0, [x0, #0]
化「整数」而化「整数」而化「整数」而「机器片」lsl wD, wA, #s
化「整数」而化「整数」而化「整数」而「机器片」lsr wD, wA, #s
化「整数」而化「整数」而化「整数」而「机器片」asr wD, wA, #s
化「整数」而化「整数」而化「整数」而「机器片」ror wD, wA, #s
「机器片」svc #7(用户陷阱)
「机器片」ret
化「整数」而「机器片」svc #号
化「整数」而化「整数」而(「列」于「机器片」)文言:一常量,宜以一二令载之:高半为零、低半为零、高半全一、低半全一者皆一令而足,余以清零载与高移二令。汉语:把三十二位常量装入 w 寄存器。高十六位为零用 MOVZ;低十六位为零用 MOVZ 加十六位移位;高十六位全一用 MOVN;低十六位全一用带移位的 MOVN;其余用 MOVZ 加 MOVK。返回一到两条指令。
化「整数」而「整数」文言:三十二位之字,若一串相连之一而环旋之,可以立即数之形入位运算;否则须先载入寄存器。汉语:判断三十二位值能否编码为 ARM64 逻辑立即数,返回旋转量与连续一的个数减一。值为零或全一不可编码。
化「整数」而「整数」暂无说明。
化「整数」而化「整数」而「整数」暂无说明。
化「整数」而(「或可有」于(「整数」合「整数」))暂无说明。
化「整数」而化「整数」而化「整数」而化「整数」而(「或可有」于「机器片」)文言:与、或、异或之立即形,先验能否入码。汉语:种类零是 AND,一是 ORR,二是 EOR。可编码时返回一条 32 位指令,否则返回可无,由调用者先把常量装入临时寄存器。
化「整数」而化「整数」而「机器片」cmn wA, #imm12(与 cmp 同,只是加而非减,用于比较负一)
化「整数」而化「整数」而化「整数」而「机器片」sub xD, xA, #imm12, lsl #12 与 add
化「整数」而化「整数」而化「整数」而「机器片」暂无说明。
化「整数」而「机器片」mov wD, #0(MOVZ)