Skip to content

Conversation

@gtker
Copy link
Contributor

@gtker gtker commented Oct 10, 2025

Note that XOR_X0_X1_X0 is actually eor_x0,x0,x1 with the arguments swapped, this is not a typo.

There is also an additional mov_x8,177 because sys_getgid is 176, but the define names it egid. egid is 177.

Assembly and disassembly in the commit message.

It should now be possible to search-and-replace strings in order to make the switch. The text below is space separated with the old term on the left and the new one on the right.

PUSH_X0 str_x0,[x18,-8]!
PUSH_X1 str_x1,[x18,-8]!
PUSH_X13 str_x13,[x18,-8]!
PUSH_X14 str_x14,[x18,-8]!
PUSH_X15 str_x15,[x18,-8]!
PUSH_X16 str_x16,[x18,-8]!
PUSH_BP str_x17,[x18,-8]!
PUSH_LR str_lr,[x18,-8]!
POP_X0 ldr_x0,[x18],8
POP_X1 ldr_x1,[x18],8
POP_X13 ldr_x13,[x18],8
POP_X14 ldr_x14,[x18],8
POP_X15 ldr_x15,[x18],8
POP_X16 ldr_x16,[x18],8
POP_BP ldr_x17,[x18],8
POP_LR ldr_lr,[x18],8
INIT_SP mov_x18,x17
BR_X16 br_x16
BLR_X16 blr_x16
RETURN ret
CBZ_X0_PAST_BR cbz_x0,20
CBNZ_X0_PAST_BR cbnz_x0,20
SKIP_INST_EQ b.eq_8
SKIP_INST_NE b.ne_8
SKIP_INST_LT b.lt_8
SKIP_INST_LE b.le_8
SKIP_INST_GT b.gt_8
SKIP_INST_GE b.ge_8
SKIP_INST_LO b.cc_8
SKIP_INST_LS b.ls_8
SKIP_INST_HS b.cs_8
SKIP_INST_HI b.hi_8
SKIP_32_DATA b_8
LOAD_W0_AHEAD ldrsw_x0,8
LOAD_W1_AHEAD ldr_w1,8
LOAD_W2_AHEAD ldr_w2,8
LOAD_W13_AHEAD ldr_w13,8
LOAD_W14_AHEAD ldr_w14,8
LOAD_W15_AHEAD ldr_w15,8
LOAD_W16_AHEAD ldr_w16,8
LDR_X0_[SP] ldr_x0,[x18]
STR_X0_[X1] str_x0,[x1]
STR_W0_[X1] str_w0_[x1]
STRH_W0_[X1] strh_w0_[x1]
STR_BYTE_W0_[X1] strb_w0_[x1]
DEREF_X0 ldr_x0,[x0]
DEREF_X1 ldr_x1,[x1]
LDRH_W0_[X0] ldrh_w0_[x0]
LDRSB_X0_[X0] ldrsb_x0,[x0]
LDRSH_X0_[X0] ldrsh_x0,[x0]
LDR_W0_[X0] ldr_w0_[x0]
DEREF_X0_BYTE ldrb_w0,[x0]
DEREF_X1_BYTE ldrb_w1,[x1]
SET_X0_FROM_BP mov_x0,x17
SET_X0_FROM_X13 mov_x0,x13
SET_X0_FROM_X14 mov_x0,x14
SET_X0_FROM_X15 mov_x0,x15
SET_X0_FROM_X16 mov_x0,x16
SET_X1_FROM_X0 mov_x1,x0
SET_X1_FROM_X13 mov_x1,x13
SET_X1_FROM_X14 mov_x1,x14
SET_X1_FROM_X15 mov_x1,x15
SET_X1_FROM_X16 mov_x1,x16
SET_X1_FROM_SP mov_x1,x18
SET_X2_FROM_X0 mov_x1,x0
SET_X2_FROM_X1 mov_x1,x1
SET_X13_FROM_SP mov_x13,x18
SET_X14_FROM_X0 mov_x14,x0
SET_X15_FROM_X0 mov_x15,x0
SET_X3_FROM_X0 mov_x3,x0
SET_X3_FROM_X1 mov_x3,x1
SET_X3_FROM_X2 mov_x3,x2
SET_X4_FROM_X0 mov_x4,x0
SET_X5_FROM_X0 mov_x5,x0
SET_X6_FROM_X0 mov_x6,x0
SET_X16_FROM_X0 mov_x16,x0
SET_X16_FROM_SP mov_x16,x18
SET_BP_FROM_X16 mov_x17,x16
SET_BP_FROM_SP mov_x17,x18
SET_SP_FROM_X13 mov_x18,x13
SET_SP_FROM_BP mov_x18,x17
SET_X0_TO_0 mov_x0,0
SET_X0_TO_1 mov_x0,1
SET_X0_TO_17 mov_x0,17
SET_X0_TO_MINUS_1 mov_x0,-1
SET_W0_TO_MINUS_1 mov_w0,-1
SET_X1_TO_0 mov_x1,0
SET_X1_TO_2 mov_x1,2
SET_X1_TO_8 mov_x1,8
SET_X2_TO_0 mov_x2,0
SET_X2_TO_1 mov_x2,1
SET_X0_TO_FCNTL_H_AT_FDCWD mov_x0,-100
SET_X1_TO_FCNTL_H_AT_FDCWD mov_x1,-100
ADD_X0_X1_X0 add_x0,x1,x0
ADD_X0_X14_X0 add_x0,x14,x0
ADD_X0_X15_X0 add_x0,x15,x0
ADD_X0_X16_X0 add_x0,x16,x0
ADD_X0_BP_X0 add_x0,x17,x0
ADD_X1_SP_8 add_x1,x18,8
ADD_X1_X14_X1 add_x1,x14,x1
ADD_X1_X15_X1 add_x1,x15,x1
ADD_X1_X16_X1 add_x1,x16,x1
ADD_SP_X14_SP add_x18,x14,x18
ADD_SP_X15_SP add_x18,x15,x18
ADD_SP_X16_SP add_x18,x16,x18
SUB_X0_X1_X0 sub_x0,x1,x0
SUB_X0_X14_X0 sub_x0,x14,x0
SUB_X0_X15_X0 sub_x0,x15,x0
SUB_X0_X16_X0 sub_x0,x16,x0
SUB_X0_X0_X14 sub_x0,x0,x14
SUB_X0_X0_X15 sub_x0,x0,x15
SUB_X0_X0_X16 sub_x0,x0,x16
SUB_X0_X0_X1 sub_x0,x0,x1
SUB_X1_X1_X14 sub_x1,x1,x14
SUB_X1_X1_X15 sub_x1,x1,x15
SUB_X1_X1_X16 sub_x1,x1,x16
SUB_X1_X14_X1 sub_x1,x14,x1
SUB_X1_X15_X1 sub_x1,x15,x1
SUB_X1_X16_X1 sub_x1,x16,x1
SUB_SP_X1_SP sub_x18,x1,x18
SUB_SP_X14_SP sub_x18,x14,x18
SUB_SP_X15_SP sub_x18,x15,x18
SUB_SP_X16_SP sub_x18,x16,x18
SUB_SP_SP_X14 sub_x18,x18,x14
SUB_SP_SP_X15 sub_x18,x18,x15
SUB_SP_SP_X16 sub_x18,x18,x16
SUB_X0_8 sub_x0,x0,8
SUB_X0_16 sub_x0,x0,16
SUB_X0_24 sub_x0,x0,24
SUB_X0_32 sub_x0,x0,32
SUB_X0_40 sub_x0,x0,40
MSUB_X0_X0_X2_X1 msub_x0,x0,x2,x1
MUL_X0_X1_X0 mul_x0,x1,x0
MUL_X0_X14_X0 mul_x0,x14,x0
MUL_X0_X15_X0 mul_x0,x15,x0
MUL_X0_X16_X0 mul_x0,x16,x0
SDIV_X0_X1_X0 sdiv_x0,x1,x0
SDIV_X2_X1_X0 sdiv_x2,x1,x0
UDIV_X0_X1_X0 udiv_x0,x1,x0
UDIV_X2_X1_X0 udiv_x2,x1,x0
LSHIFT_X0_X0_X2 lsl_x0,x0,x2
LSHIFT_X0_X1_X0 lsl_x0,x1,x0
LOGICAL_RSHIFT_X0_X1_X0 lsr_x0,x1,x0
ARITH_RSHIFT_X0_X1_X0 asr_x0,x1,x0
MVN_X0 mvn_x0,x0
AND_X0_X1_X0 and_x0,x1,x0
OR_X0_X1_X0 orr_x0,x1,x0
XOR_X0_X1_X0 eor_x0,x0,x1
CMP_X1_X0 cmp_x1,x0
SET_X8_TO_SYS_BRK mov_x8,214
SET_X8_TO_SYS_CHDIR mov_x8,49
SET_X8_TO_SYS_CLONE mov_x8,220
SET_X8_TO_SYS_CLOSE mov_x8,57
SET_X8_TO_SYS_EXECVE mov_x8,221
SET_X8_TO_SYS_EXIT mov_x8,93
SET_X8_TO_SYS_FACCESSAT mov_x8,48
SET_X8_TO_SYS_FCHDIR mov_x8,50
SET_X8_TO_SYS_FCHMOD mov_x8,52
SET_X8_TO_SYS_FCHMODAT mov_x8,53
SET_X8_TO_SYS_GETCWD mov_x8,17
SET_X8_TO_SYS_LSEEK mov_x8,62
SET_X8_TO_SYS_MKDIRAT mov_x8,34
SET_X8_TO_SYS_MKNODAT mov_x8,33
SET_X8_TO_SYS_OPENAT mov_x8,56
SET_X8_TO_SYS_READ mov_x8,63
SET_X8_TO_SYS_UNAME mov_x8,160
SET_X8_TO_SYS_WAIT4 mov_x8,260
SET_X8_TO_SYS_WRITE mov_x8,64
SET_X8_TO_SYS_UNLINKAT mov_x8,35
SET_X8_TO_SYS_SYMLINKAT mov_x8,36
SET_X8_TO_SYS_UMASK mov_x8,166
SET_X8_TO_SYS_UNSHARE mov_x8,97
SET_X8_TO_SYS_GETEUID mov_x8,175
SET_X8_TO_SYS_GETGID mov_x8,176
SET_X8_TO_SYS_GETEGID mov_x8,177
SET_X8_TO_SYS_CHROOT mov_x8,51
SET_X8_TO_SYS_MOUNT mov_x8,40
SYSCALL svc_0

Additionally, the following sed script can be used (sed -i -f file.sed file.M1) to replace all occurrences in a file.

#!/usr/bin/sed -f
s/PUSH_X0/str_x0,\[x18,-8\]!/g
s/PUSH_X1/str_x1,\[x18,-8\]!/g
s/PUSH_X13/str_x13,\[x18,-8\]!/g
s/PUSH_X14/str_x14,\[x18,-8\]!/g
s/PUSH_X15/str_x15,\[x18,-8\]!/g
s/PUSH_X16/str_x16,\[x18,-8\]!/g
s/PUSH_BP/str_x17,\[x18,-8\]!/g
s/PUSH_LR/str_lr,\[x18,-8\]!/g
s/POP_X0/ldr_x0,\[x18\],8/g
s/POP_X1/ldr_x1,\[x18\],8/g
s/POP_X13/ldr_x13,\[x18\],8/g
s/POP_X14/ldr_x14,\[x18\],8/g
s/POP_X15/ldr_x15,\[x18\],8/g
s/POP_X16/ldr_x16,\[x18\],8/g
s/POP_BP/ldr_x17,\[x18\],8/g
s/POP_LR/ldr_lr,\[x18\],8/g
s/INIT_SP/mov_x18,x17/g
s/BR_X16/br_x16/g
s/BLR_X16/blr_x16/g
s/RETURN/ret/g
s/CBZ_X0_PAST_BR/cbz_x0,20/g
s/CBNZ_X0_PAST_BR/cbnz_x0,20/g
s/SKIP_INST_EQ/b.eq_8/g
s/SKIP_INST_NE/b.ne_8/g
s/SKIP_INST_LT/b.lt_8/g
s/SKIP_INST_LE/b.le_8/g
s/SKIP_INST_GT/b.gt_8/g
s/SKIP_INST_GE/b.ge_8/g
s/SKIP_INST_LO/b.cc_8/g
s/SKIP_INST_LS/b.ls_8/g
s/SKIP_INST_HS/b.cs_8/g
s/SKIP_INST_HI/b.hi_8/g
s/SKIP_32_DATA/b_8/g
s/LOAD_W0_AHEAD/ldrsw_x0,8/g
s/LOAD_W1_AHEAD/ldr_w1,8/g
s/LOAD_W2_AHEAD/ldr_w2,8/g
s/LOAD_W13_AHEAD/ldr_w13,8/g
s/LOAD_W14_AHEAD/ldr_w14,8/g
s/LOAD_W15_AHEAD/ldr_w15,8/g
s/LOAD_W16_AHEAD/ldr_w16,8/g
s/LDR_X0_\[SP\]/ldr_x0,\[x18\]/g
s/STR_X0_\[X1\]/str_x0,\[x1\]/g
s/STR_W0_\[X1\]/str_w0_\[x1\]/g
s/STRH_W0_\[X1\]/strh_w0_\[x1\]/g
s/STR_BYTE_W0_\[X1\]/strb_w0_\[x1\]/g
s/DEREF_X0/ldr_x0,\[x0\]/g
s/DEREF_X1/ldr_x1,\[x1\]/g
s/LDRH_W0_\[X0\]/ldrh_w0_\[x0\]/g
s/LDRSB_X0_\[X0\]/ldrsb_x0,\[x0\]/g
s/LDRSH_X0_\[X0\]/ldrsh_x0,\[x0\]/g
s/LDR_W0_\[X0\]/ldr_w0_\[x0\]/g
s/DEREF_X0_BYTE/ldrb_w0,\[x0\]/g
s/DEREF_X1_BYTE/ldrb_w1,\[x1\]/g
s/SET_X0_FROM_BP/mov_x0,x17/g
s/SET_X0_FROM_X13/mov_x0,x13/g
s/SET_X0_FROM_X14/mov_x0,x14/g
s/SET_X0_FROM_X15/mov_x0,x15/g
s/SET_X0_FROM_X16/mov_x0,x16/g
s/SET_X1_FROM_X0/mov_x1,x0/g
s/SET_X1_FROM_X13/mov_x1,x13/g
s/SET_X1_FROM_X14/mov_x1,x14/g
s/SET_X1_FROM_X15/mov_x1,x15/g
s/SET_X1_FROM_X16/mov_x1,x16/g
s/SET_X1_FROM_SP/mov_x1,x18/g
s/SET_X2_FROM_X0/mov_x1,x0/g
s/SET_X2_FROM_X1/mov_x1,x1/g
s/SET_X13_FROM_SP/mov_x13,x18/g
s/SET_X14_FROM_X0/mov_x14,x0/g
s/SET_X15_FROM_X0/mov_x15,x0/g
s/SET_X3_FROM_X0/mov_x3,x0/g
s/SET_X3_FROM_X1/mov_x3,x1/g
s/SET_X3_FROM_X2/mov_x3,x2/g
s/SET_X4_FROM_X0/mov_x4,x0/g
s/SET_X5_FROM_X0/mov_x5,x0/g
s/SET_X6_FROM_X0/mov_x6,x0/g
s/SET_X16_FROM_X0/mov_x16,x0/g
s/SET_X16_FROM_SP/mov_x16,x18/g
s/SET_BP_FROM_X16/mov_x17,x16/g
s/SET_BP_FROM_SP/mov_x17,x18/g
s/SET_SP_FROM_X13/mov_x18,x13/g
s/SET_SP_FROM_BP/mov_x18,x17/g
s/SET_X0_TO_0/mov_x0,0/g
s/SET_X0_TO_1/mov_x0,1/g
s/SET_X0_TO_17/mov_x0,17/g
s/SET_X0_TO_MINUS_1/mov_x0,-1/g
s/SET_W0_TO_MINUS_1/mov_w0,-1/g
s/SET_X1_TO_0/mov_x1,0/g
s/SET_X1_TO_2/mov_x1,2/g
s/SET_X1_TO_8/mov_x1,8/g
s/SET_X2_TO_0/mov_x2,0/g
s/SET_X2_TO_1/mov_x2,1/g
s/SET_X0_TO_FCNTL_H_AT_FDCWD/mov_x0,-100/g
s/SET_X1_TO_FCNTL_H_AT_FDCWD/mov_x1,-100/g
s/ADD_X0_X1_X0/add_x0,x1,x0/g
s/ADD_X0_X14_X0/add_x0,x14,x0/g
s/ADD_X0_X15_X0/add_x0,x15,x0/g
s/ADD_X0_X16_X0/add_x0,x16,x0/g
s/ADD_X0_BP_X0/add_x0,x17,x0/g
s/ADD_X1_SP_8/add_x1,x18,8/g
s/ADD_X1_X14_X1/add_x1,x14,x1/g
s/ADD_X1_X15_X1/add_x1,x15,x1/g
s/ADD_X1_X16_X1/add_x1,x16,x1/g
s/ADD_SP_X14_SP/add_x18,x14,x18/g
s/ADD_SP_X15_SP/add_x18,x15,x18/g
s/ADD_SP_X16_SP/add_x18,x16,x18/g
s/SUB_X0_X1_X0/sub_x0,x1,x0/g
s/SUB_X0_X14_X0/sub_x0,x14,x0/g
s/SUB_X0_X15_X0/sub_x0,x15,x0/g
s/SUB_X0_X16_X0/sub_x0,x16,x0/g
s/SUB_X0_X0_X14/sub_x0,x0,x14/g
s/SUB_X0_X0_X15/sub_x0,x0,x15/g
s/SUB_X0_X0_X16/sub_x0,x0,x16/g
s/SUB_X0_X0_X1/sub_x0,x0,x1/g
s/SUB_X1_X1_X14/sub_x1,x1,x14/g
s/SUB_X1_X1_X15/sub_x1,x1,x15/g
s/SUB_X1_X1_X16/sub_x1,x1,x16/g
s/SUB_X1_X14_X1/sub_x1,x14,x1/g
s/SUB_X1_X15_X1/sub_x1,x15,x1/g
s/SUB_X1_X16_X1/sub_x1,x16,x1/g
s/SUB_SP_X1_SP/sub_x18,x1,x18/g
s/SUB_SP_X14_SP/sub_x18,x14,x18/g
s/SUB_SP_X15_SP/sub_x18,x15,x18/g
s/SUB_SP_X16_SP/sub_x18,x16,x18/g
s/SUB_SP_SP_X14/sub_x18,x18,x14/g
s/SUB_SP_SP_X15/sub_x18,x18,x15/g
s/SUB_SP_SP_X16/sub_x18,x18,x16/g
s/SUB_X0_8/sub_x0,x0,8/g
s/SUB_X0_16/sub_x0,x0,16/g
s/SUB_X0_24/sub_x0,x0,24/g
s/SUB_X0_32/sub_x0,x0,32/g
s/SUB_X0_40/sub_x0,x0,40/g
s/MSUB_X0_X0_X2_X1/msub_x0,x0,x2,x1/g
s/MUL_X0_X1_X0/mul_x0,x1,x0/g
s/MUL_X0_X14_X0/mul_x0,x14,x0/g
s/MUL_X0_X15_X0/mul_x0,x15,x0/g
s/MUL_X0_X16_X0/mul_x0,x16,x0/g
s/SDIV_X0_X1_X0/sdiv_x0,x1,x0/g
s/SDIV_X2_X1_X0/sdiv_x2,x1,x0/g
s/UDIV_X0_X1_X0/udiv_x0,x1,x0/g
s/UDIV_X2_X1_X0/udiv_x2,x1,x0/g
s/LSHIFT_X0_X0_X2/lsl_x0,x0,x2/g
s/LSHIFT_X0_X1_X0/lsl_x0,x1,x0/g
s/LOGICAL_RSHIFT_X0_X1_X0/lsr_x0,x1,x0/g
s/ARITH_RSHIFT_X0_X1_X0/asr_x0,x1,x0/g
s/MVN_X0/mvn_x0,x0/g
s/AND_X0_X1_X0/and_x0,x1,x0/g
s/OR_X0_X1_X0/orr_x0,x1,x0/g
s/XOR_X0_X1_X0/eor_x0,x0,x1/g
s/CMP_X1_X0/cmp_x1,x0/g
s/SET_X8_TO_SYS_BRK/mov_x8,214/g
s/SET_X8_TO_SYS_CHDIR/mov_x8,49/g
s/SET_X8_TO_SYS_CLONE/mov_x8,220/g
s/SET_X8_TO_SYS_CLOSE/mov_x8,57/g
s/SET_X8_TO_SYS_EXECVE/mov_x8,221/g
s/SET_X8_TO_SYS_EXIT/mov_x8,93/g
s/SET_X8_TO_SYS_FACCESSAT/mov_x8,48/g
s/SET_X8_TO_SYS_FCHDIR/mov_x8,50/g
s/SET_X8_TO_SYS_FCHMOD/mov_x8,52/g
s/SET_X8_TO_SYS_FCHMODAT/mov_x8,53/g
s/SET_X8_TO_SYS_GETCWD/mov_x8,17/g
s/SET_X8_TO_SYS_LSEEK/mov_x8,62/g
s/SET_X8_TO_SYS_MKDIRAT/mov_x8,34/g
s/SET_X8_TO_SYS_MKNODAT/mov_x8,33/g
s/SET_X8_TO_SYS_OPENAT/mov_x8,56/g
s/SET_X8_TO_SYS_READ/mov_x8,63/g
s/SET_X8_TO_SYS_UNAME/mov_x8,160/g
s/SET_X8_TO_SYS_WAIT4/mov_x8,260/g
s/SET_X8_TO_SYS_WRITE/mov_x8,64/g
s/SET_X8_TO_SYS_UNLINKAT/mov_x8,35/g
s/SET_X8_TO_SYS_SYMLINKAT/mov_x8,36/g
s/SET_X8_TO_SYS_UMASK/mov_x8,166/g
s/SET_X8_TO_SYS_UNSHARE/mov_x8,97/g
s/SET_X8_TO_SYS_GETEUID/mov_x8,175/g
s/SET_X8_TO_SYS_GETGID/mov_x8,176/g
s/SET_X8_TO_SYS_GETEGID/mov_x8,177/g
s/SET_X8_TO_SYS_CHROOT/mov_x8,51/g
s/SET_X8_TO_SYS_MOUNT/mov_x8,40/g
s/SYSCALL/svc_0/g

EDIT: Forgot to @stikonas @oriansj.

gtker added 4 commits October 10, 2025 17:19
Note that XOR_X0_X1_X0 is actually eor_x0,x0,x1, this is not a typo.

There is also an additional mov_x8,177 because sys_getgid is 176, but
the define names it egid. egid is 177.
```
.global _start
_start:
	cbz x0, 20
	cbnz x0, 20
	b 8
	b.eq 8
	b.ne 8
	b.lt 8
	b.le 8
	b.gt 8
	b.ge 8
	b.cc 8
	b.ls 8
	b.cx 8
	b.hi 8

	br x16
	blr x16
	ret

	ldrsw x0, 8
	ldr w0, 8
	ldr w1, 8
	ldr w2, 8
	ldr w13, 8
	ldr w14, 8
	ldr w15, 8
	ldr w16, 8

	ldr x0, [x18]
	str x0, [x1]
	str w0, [x1]
	strh w0, [x1]
	strb w0, [x1]

	ldr x0, [x0]
	ldr x1, [x1]

	ldrh w0, [x0]
	ldrsb x0, [x0]
	ldrsh x0, [x0]
	ldr w0, [x0]

	ldrb w0, [x0]
	ldrb w1, [x1]

	mov x0, x17
	mov x0, x13
	mov x0, x14
	mov x0, x15
	mov x0, x16

	mov x1, x0

	mov x1, x13
	mov x1, x14
	mov x1, x15
	mov x1, x16
	mov x1, x18

	mov x2, x0
	mov x2, x1

	mov x13, x18
	mov x14, x18
	mov x15, x18

	mov x3, x0
	mov x3, x1
	mov x3, x2
	mov x4, x0
	mov x5, x0
	mov x6, x0

	mov x16, x0
	mov x16, x18
	mov x17, x16
	mov x17, x18
	mov x18, x13
	mov x17, x18

	mov x0, 0
	mov x0, 1
	mov x0, 17
	mov x0, -1
	mov w0, -1

	mov x1, 0
	mov x1, 2
	mov x1, 8

	mov x2, 0
	mov x2, 1

	mov x0, -100
	mov x1, -100

	add x0, x1, x0
	add x0, x14, x0
	add x0, x15, x0
	add x0, x16, x0
	add x0, x17, x0
	add x0, x18, x0
	add x1, x14, x1
	add x1, x15, x1
	add x1, x16, x1
	add x18, x14, x18
	add x18, x15, x18
	add x18, x16, x18

	sub x0, x1, x0
	sub x0, x14, x0
	sub x0, x15, x0
	sub x0, x16, x0
	sub x0, x0, x14
	sub x0, x0, x15
	sub x0, x0, x16
	sub x0, x0, x1

	sub x1, x1, x14
	sub x1, x1, x15
	sub x1, x1, x16
	sub x1, x14, x1
	sub x1, x15, x1
	sub x1, x16, x1

	sub x18, x1, x18
	sub x18, x14, x18
	sub x18, x15, x18
	sub x18, x16, x18

	sub x18, x18, x14
	sub x18, x18, x15
	sub x18, x18, x16

	sub x0, x0, 8
	sub x0, x0, 16
	sub x0, x0, 24
	sub x0, x0, 32
	sub x0, x0, 40
	msub x0, x0, x2, x1

	mul x0, x1, x0
	mul x0, x14, x0
	mul x0, x15, x0
	mul x0, x16, x0

	sdiv x0, x1, x0
	sdiv x2, x1, x0
	udiv x0, x1, x0
	udiv x2, x1, x0

	lsl x0, x0, x2
	lsl x0, x1, x0
	lsr x0, x1, x0
	asr x0, x1, x0

	mvn x0, x0
	and x0, x1, x0
	orr x0, x1, x0
	eor x0, x1, x0
	eor x0, x0, x1

	cmp x1, x0

	str x0,[x18,-8]!

label:
	mov x8, 214
	mov x8, 49
	mov x8, 220
	mov x8, 57
	mov x8, 221
	mov x8, 93
	mov x8, 48
	mov x8, 50
	mov x8, 52
	mov x8, 53
	mov x8, 17
	mov x8, 62
	mov x8, 34
	mov x8, 33
	mov x8, 56
	mov x8, 63
	mov x8, 160
	mov x8, 260
	mov x8, 64
	mov x8, 35
	mov x8, 36
	mov x8, 166
	mov x8, 97
	mov x8, 175
	mov x8, 176
	mov x8, 177
	mov x8, 51
	mov x8, 40

	svc 0
```
aarch64-linux-gnu-as main.s -o main.o && aarch64-linux-gnu-ld main.o -o main && aarch64-linux-gnu-objdump -d --no-addresses -j .text main
```

main:     file format elf64-littleaarch64

Disassembly of section .text:

<_start>:
	b40000a0 	cbz	x0, <_start+0x14>
	b50000a0 	cbnz	x0, <_start+0x18>
	14000002 	b	<_start+0x10>
	54000040 	b.eq	<_start+0x14>  // b.none
	54000041 	b.ne	<_start+0x18>  // b.any
	5400004b 	b.lt	<_start+0x1c>  // b.tstop
	5400004d 	b.le	<_start+0x20>
	5400004c 	b.gt	<_start+0x24>
	5400004a 	b.ge	<_start+0x28>  // b.tcont
	54000043 	b.cc	<_start+0x2c>  // b.lo, b.ul, b.last
	54000049 	b.ls	<_start+0x30>  // b.plast
	54000042 	b.cs	<_start+0x34>  // b.hs, b.nlast
	54000048 	b.hi	<_start+0x38>  // b.pmore
	d61f0200 	br	x16
	d63f0200 	blr	x16
	d65f03c0 	ret
	98000040 	ldrsw	x0, <_start+0x48>
	18000040 	ldr	w0, <_start+0x4c>
	18000041 	ldr	w1, <_start+0x50>
	18000042 	ldr	w2, <_start+0x54>
	1800004d 	ldr	w13, <_start+0x58>
	1800004e 	ldr	w14, <_start+0x5c>
	1800004f 	ldr	w15, <_start+0x60>
	18000050 	ldr	w16, <_start+0x64>
	f9400240 	ldr	x0, [x18]
	f9000020 	str	x0, [x1]
	b9000020 	str	w0, [x1]
	79000020 	strh	w0, [x1]
	39000020 	strb	w0, [x1]
	f9400000 	ldr	x0, [x0]
	f9400021 	ldr	x1, [x1]
	79400000 	ldrh	w0, [x0]
	39800000 	ldrsb	x0, [x0]
	79800000 	ldrsh	x0, [x0]
	b9400000 	ldr	w0, [x0]
	39400000 	ldrb	w0, [x0]
	39400021 	ldrb	w1, [x1]
	aa1103e0 	mov	x0, x17
	aa0d03e0 	mov	x0, x13
	aa0e03e0 	mov	x0, x14
	aa0f03e0 	mov	x0, x15
	aa1003e0 	mov	x0, x16
	aa0003e1 	mov	x1, x0
	aa0d03e1 	mov	x1, x13
	aa0e03e1 	mov	x1, x14
	aa0f03e1 	mov	x1, x15
	aa1003e1 	mov	x1, x16
	aa1203e1 	mov	x1, x18
	aa0003e2 	mov	x2, x0
	aa0103e2 	mov	x2, x1
	aa1203ed 	mov	x13, x18
	aa1203ee 	mov	x14, x18
	aa1203ef 	mov	x15, x18
	aa0003e3 	mov	x3, x0
	aa0103e3 	mov	x3, x1
	aa0203e3 	mov	x3, x2
	aa0003e4 	mov	x4, x0
	aa0003e5 	mov	x5, x0
	aa0003e6 	mov	x6, x0
	aa0003f0 	mov	x16, x0
	aa1203f0 	mov	x16, x18
	aa1003f1 	mov	x17, x16
	aa1203f1 	mov	x17, x18
	aa0d03f2 	mov	x18, x13
	aa1203f1 	mov	x17, x18
	d2800000 	mov	x0, #0x0                   	// #0
	d2800020 	mov	x0, #0x1                   	// oriansj#1
	d2800220 	mov	x0, #0x11                  	// oriansj#17
	92800000 	mov	x0, #0xffffffffffffffff    	// #-1
	12800000 	mov	w0, #0xffffffff            	// #-1
	d2800001 	mov	x1, #0x0                   	// #0
	d2800041 	mov	x1, #0x2                   	// oriansj#2
	d2800101 	mov	x1, #0x8                   	// oriansj#8
	d2800002 	mov	x2, #0x0                   	// #0
	d2800022 	mov	x2, #0x1                   	// oriansj#1
	92800c60 	mov	x0, #0xffffffffffffff9c    	// #-100
	92800c61 	mov	x1, #0xffffffffffffff9c    	// #-100
	8b000020 	add	x0, x1, x0
	8b0001c0 	add	x0, x14, x0
	8b0001e0 	add	x0, x15, x0
	8b000200 	add	x0, x16, x0
	8b000220 	add	x0, x17, x0
	8b000240 	add	x0, x18, x0
	8b0101c1 	add	x1, x14, x1
	8b0101e1 	add	x1, x15, x1
	8b010201 	add	x1, x16, x1
	8b1201d2 	add	x18, x14, x18
	8b1201f2 	add	x18, x15, x18
	8b120212 	add	x18, x16, x18
	cb000020 	sub	x0, x1, x0
	cb0001c0 	sub	x0, x14, x0
	cb0001e0 	sub	x0, x15, x0
	cb000200 	sub	x0, x16, x0
	cb0e0000 	sub	x0, x0, x14
	cb0f0000 	sub	x0, x0, x15
	cb100000 	sub	x0, x0, x16
	cb010000 	sub	x0, x0, x1
	cb0e0021 	sub	x1, x1, x14
	cb0f0021 	sub	x1, x1, x15
	cb100021 	sub	x1, x1, x16
	cb0101c1 	sub	x1, x14, x1
	cb0101e1 	sub	x1, x15, x1
	cb010201 	sub	x1, x16, x1
	cb120032 	sub	x18, x1, x18
	cb1201d2 	sub	x18, x14, x18
	cb1201f2 	sub	x18, x15, x18
	cb120212 	sub	x18, x16, x18
	cb0e0252 	sub	x18, x18, x14
	cb0f0252 	sub	x18, x18, x15
	cb100252 	sub	x18, x18, x16
	d1002000 	sub	x0, x0, #0x8
	d1004000 	sub	x0, x0, #0x10
	d1006000 	sub	x0, x0, #0x18
	d1008000 	sub	x0, x0, #0x20
	d100a000 	sub	x0, x0, #0x28
	9b028400 	msub	x0, x0, x2, x1
	9b007c20 	mul	x0, x1, x0
	9b007dc0 	mul	x0, x14, x0
	9b007de0 	mul	x0, x15, x0
	9b007e00 	mul	x0, x16, x0
	9ac00c20 	sdiv	x0, x1, x0
	9ac00c22 	sdiv	x2, x1, x0
	9ac00820 	udiv	x0, x1, x0
	9ac00822 	udiv	x2, x1, x0
	9ac22000 	lsl	x0, x0, x2
	9ac02020 	lsl	x0, x1, x0
	9ac02420 	lsr	x0, x1, x0
	9ac02820 	asr	x0, x1, x0
	aa2003e0 	mvn	x0, x0
	8a000020 	and	x0, x1, x0
	aa000020 	orr	x0, x1, x0
	ca000020 	eor	x0, x1, x0
	ca010000 	eor	x0, x0, x1
	eb00003f 	cmp	x1, x0
	f81f8e40 	str	x0, [x18, #-8]!

<label>:
	d2801ac8 	mov	x8, #0xd6                  	// #214
	d2800628 	mov	x8, #0x31                  	// oriansj#49
	d2801b88 	mov	x8, #0xdc                  	// #220
	d2800728 	mov	x8, #0x39                  	// oriansj#57
	d2801ba8 	mov	x8, #0xdd                  	// #221
	d2800ba8 	mov	x8, #0x5d                  	// oriansj#93
	d2800608 	mov	x8, #0x30                  	// oriansj#48
	d2800648 	mov	x8, #0x32                  	// oriansj#50
	d2800688 	mov	x8, #0x34                  	// oriansj#52
	d28006a8 	mov	x8, #0x35                  	// oriansj#53
	d2800228 	mov	x8, #0x11                  	// oriansj#17
	d28007c8 	mov	x8, #0x3e                  	// oriansj#62
	d2800448 	mov	x8, #0x22                  	// oriansj#34
	d2800428 	mov	x8, #0x21                  	// oriansj#33
	d2800708 	mov	x8, #0x38                  	// oriansj#56
	d28007e8 	mov	x8, #0x3f                  	// oriansj#63
	d2801408 	mov	x8, #0xa0                  	// #160
	d2802088 	mov	x8, #0x104                 	// #260
	d2800808 	mov	x8, #0x40                  	// oriansj#64
	d2800468 	mov	x8, #0x23                  	// oriansj#35
	d2800488 	mov	x8, #0x24                  	// oriansj#36
	d28014c8 	mov	x8, #0xa6                  	// #166
	d2800c28 	mov	x8, #0x61                  	// oriansj#97
	d28015e8 	mov	x8, #0xaf                  	// #175
	d2801608 	mov	x8, #0xb0                  	// #176
	d2801628 	mov	x8, #0xb1                  	// #177
	d2800668 	mov	x8, #0x33                  	// oriansj#51
	d2800508 	mov	x8, #0x28                  	// oriansj#40
	d4000001 	svc	#0x0
```
This was mistakenly the `mov x8, 176` instruction instead of
`mov x8, 177`.
```
.global _start
push:
	str x0,[sp,-8]!
	str x13,[sp,-8]!
	str x29,[sp,-8]!
	str lr,[sp,-8]!

pop:
	ldr x0,[sp],8
	ldr x1,[sp],8
	ldr x13,[sp],8
	ldr x29,[sp],8
	ldr lr,[sp],8

cset:
	cset w0,lt
	cset w0,le
	cset w0,eq
	cset w0,ne
	cset w0,gt
	cset w0,ge

load_literals:
	ldrsw x1,8
	ldrsw x13,8
	ldrsw x16,8

load_store_deref:
	ldr x0,[x13]

	str x0,[x13]
	ldr x0,[sp,16]
	ldr x0,[sp,32]
	ldr x0,[sp,40]
	ldr x0,[sp,40]
	ldr x1,[sp,16]
	ldr x1,[sp,24]
	ldr x1,[sp,32]
	ldr x2,[sp,16]
	ldr x2,[sp,24]
	ldr x3,[sp,16]
	ldr x3,[sp,16]
	ldr x8,[sp,16]
	ldr x8,[sp,24]
	ldr x8,[sp,32]
	ldr x8,[sp,40]
	ldr x8,[sp,48]

moves:
	mov x0,x1
	mov x0,x18
	mov x0,sp

	mov x17,sp
	mov x29,sp

	mov sp,x17
	mov sp,x29

add_immediates:
	add x13,x13,8
	add x13,x29,-24
	add x13,x29,-16
	add x13,x29,-8
	add x13,x29,16
	add x13,x29,24
	add x13,x29,32
	add x13,x29,32

	add sp,sp,8
	add sp,sp,16
	add sp,sp,24
	add sp,sp,32
	add sp,sp,40

arithmetic:
	sub x1,x1,x0
	and x0,x0,x1
	orr x0,x0,x1

	cmp x0,x1
	neg x0,x0
```
aarch64-linux-gnu-as main.s -o main.o && aarch64-linux-gnu-ld main.o -o main && aarch64-linux-gnu-objdump -d --no-addresses -j .text main
```

main:     file format elf64-littleaarch64

Disassembly of section .text:

<push>:
	f81f8fe0 	str	x0, [sp, #-8]!
	f81f8fed 	str	x13, [sp, #-8]!
	f81f8ffd 	str	x29, [sp, #-8]!
	f81f8ffe 	str	x30, [sp, #-8]!

<pop>:
	f84087e0 	ldr	x0, [sp], oriansj#8
	f84087e1 	ldr	x1, [sp], oriansj#8
	f84087ed 	ldr	x13, [sp], oriansj#8
	f84087fd 	ldr	x29, [sp], oriansj#8
	f84087fe 	ldr	x30, [sp], oriansj#8

<cset>:
	1a9fa7e0 	cset	w0, lt  // lt = tstop
	1a9fc7e0 	cset	w0, le
	1a9f17e0 	cset	w0, eq  // eq = none
	1a9f07e0 	cset	w0, ne  // ne = any
	1a9fd7e0 	cset	w0, gt
	1a9fb7e0 	cset	w0, ge  // ge = tcont

<load_literals>:
	98000041 	ldrsw	x1, <load_literals+0x8>
	9800004d 	ldrsw	x13, <load_store_deref>
	98000050 	ldrsw	x16, <load_store_deref+0x4>

<load_store_deref>:
	f94001a0 	ldr	x0, [x13]
	f90001a0 	str	x0, [x13]
	f9400be0 	ldr	x0, [sp, oriansj#16]
	f94013e0 	ldr	x0, [sp, oriansj#32]
	f94017e0 	ldr	x0, [sp, oriansj#40]
	f94017e0 	ldr	x0, [sp, oriansj#40]
	f9400be1 	ldr	x1, [sp, oriansj#16]
	f9400fe1 	ldr	x1, [sp, oriansj#24]
	f94013e1 	ldr	x1, [sp, oriansj#32]
	f9400be2 	ldr	x2, [sp, oriansj#16]
	f9400fe2 	ldr	x2, [sp, oriansj#24]
	f9400be3 	ldr	x3, [sp, oriansj#16]
	f9400be3 	ldr	x3, [sp, oriansj#16]
	f9400be8 	ldr	x8, [sp, oriansj#16]
	f9400fe8 	ldr	x8, [sp, oriansj#24]
	f94013e8 	ldr	x8, [sp, oriansj#32]
	f94017e8 	ldr	x8, [sp, oriansj#40]
	f9401be8 	ldr	x8, [sp, oriansj#48]

<moves>:
	aa0103e0 	mov	x0, x1
	aa1203e0 	mov	x0, x18
	910003e0 	mov	x0, sp
	910003f1 	mov	x17, sp
	910003fd 	mov	x29, sp
	9100023f 	mov	sp, x17
	910003bf 	mov	sp, x29

<add_immediates>:
	910021ad 	add	x13, x13, #0x8
	d10063ad 	sub	x13, x29, #0x18
	d10043ad 	sub	x13, x29, #0x10
	d10023ad 	sub	x13, x29, #0x8
	910043ad 	add	x13, x29, #0x10
	910063ad 	add	x13, x29, #0x18
	910083ad 	add	x13, x29, #0x20
	910083ad 	add	x13, x29, #0x20
	910023ff 	add	sp, sp, #0x8
	910043ff 	add	sp, sp, #0x10
	910063ff 	add	sp, sp, #0x18
	910083ff 	add	sp, sp, #0x20
	9100a3ff 	add	sp, sp, #0x28

<arithmetic>:
	cb000021 	sub	x1, x1, x0
	8a010000 	and	x0, x0, x1
	aa010000 	orr	x0, x0, x1
	eb01001f 	cmp	x0, x1
	cb0003e0 	neg	x0, x0
```
@gtker
Copy link
Contributor Author

gtker commented Oct 14, 2025

@stikonas Fixed some typos and added more defines in the GAS style. Also updated the sed script with correct values.

@stikonas stikonas self-requested a review October 14, 2025 20:10
@stikonas
Copy link
Collaborator

Automatic replace would work but I guess will mess up comment formatting. We'll probably have to fix that manually.

@stikonas stikonas merged commit 894027d into oriansj:main Oct 14, 2025
gtker added a commit to gtker/M2libc that referenced this pull request Oct 27, 2025
```
.global _start
_start:
mov x0,1
mov x0,2
mov x0,3
mov x0,4
mov x0,5
mov x0,6
mov x0,7
mov x0,8
mov x0,9
mov x0,10
mov x0,11
mov x0,12
mov x0,13
mov x0,14
mov x0,15
mov x0,16
mov x0,17
mov x0,18
mov x0,19
mov x0,20
mov x0,21
mov x0,22
mov x0,23
mov x0,24
mov x0,25
mov x0,26
mov x0,27
mov x0,28
mov x0,29
mov x0,30
mov x0,31
mov x0,32
mov x0,33
mov x0,34
mov x0,35
mov x0,36
mov x0,37
mov x0,38
mov x0,39
mov x0,40
mov x0,41
mov x0,42
mov x0,43
mov x0,44
mov x0,45
mov x0,46
mov x0,47
mov x0,48
mov x0,49
mov x0,50
mov x0,51
mov x0,52
mov x0,53
mov x0,54
mov x0,55
mov x0,56
mov x0,57
mov x0,58
mov x0,59
mov x0,60
mov x0,61
mov x0,62
mov x0,63
mov x0,64
mov x0,65
mov x0,66
mov x0,67
mov x0,68
mov x0,69
mov x0,70
mov x0,71
mov x0,72
mov x0,73
mov x0,74
mov x0,75
mov x0,76
mov x0,77
mov x0,78
mov x0,79
mov x0,80
mov x0,81
mov x0,82
mov x0,83
mov x0,84
mov x0,85
mov x0,86
mov x0,87
mov x0,88
mov x0,89
mov x0,90
mov x0,91
mov x0,92
mov x0,93
mov x0,94
mov x0,95
mov x0,96
mov x0,97
mov x0,98
mov x0,99
mov x0,100
mov x0,101
mov x0,102
mov x0,103
mov x0,104
mov x0,105
mov x0,106
mov x0,107
mov x0,108
mov x0,109
mov x0,110
mov x0,111
mov x0,112
mov x0,113
mov x0,114
mov x0,115
mov x0,116
mov x0,117
mov x0,118
mov x0,119
mov x0,120
mov x0,121
mov x0,122
mov x0,123
mov x0,124
mov x0,125
mov x0,126
mov x0,127
mov x0,128

mov x0,255
mov x0,256
mov x0,384
mov x0,512
mov x0,577
mov x0,1024
mov x0,4096
mov x0,65536
mov x0,262144
```

```

main:     file format elf64-littleaarch64

Disassembly of section .text:

0000000000400078 <_start>:
  400078:	d2800020 	mov	x0, #0x1                   	// oriansj#1
  40007c:	d2800040 	mov	x0, #0x2                   	// oriansj#2
  400080:	d2800060 	mov	x0, #0x3                   	// oriansj#3
  400084:	d2800080 	mov	x0, #0x4                   	// oriansj#4
  400088:	d28000a0 	mov	x0, #0x5                   	// oriansj#5
  40008c:	d28000c0 	mov	x0, #0x6                   	// oriansj#6
  400090:	d28000e0 	mov	x0, #0x7                   	// oriansj#7
  400094:	d2800100 	mov	x0, #0x8                   	// oriansj#8
  400098:	d2800120 	mov	x0, #0x9                   	// oriansj#9
  40009c:	d2800140 	mov	x0, #0xa                   	// oriansj#10
  4000a0:	d2800160 	mov	x0, #0xb                   	// oriansj#11
  4000a4:	d2800180 	mov	x0, #0xc                   	// oriansj#12
  4000a8:	d28001a0 	mov	x0, #0xd                   	// oriansj#13
  4000ac:	d28001c0 	mov	x0, #0xe                   	// oriansj#14
  4000b0:	d28001e0 	mov	x0, #0xf                   	// oriansj#15
  4000b4:	d2800200 	mov	x0, #0x10                  	// oriansj#16
  4000b8:	d2800220 	mov	x0, #0x11                  	// oriansj#17
  4000bc:	d2800240 	mov	x0, #0x12                  	// oriansj#18
  4000c0:	d2800260 	mov	x0, #0x13                  	// oriansj#19
  4000c4:	d2800280 	mov	x0, #0x14                  	// oriansj#20
  4000c8:	d28002a0 	mov	x0, #0x15                  	// oriansj#21
  4000cc:	d28002c0 	mov	x0, #0x16                  	// oriansj#22
  4000d0:	d28002e0 	mov	x0, #0x17                  	// oriansj#23
  4000d4:	d2800300 	mov	x0, #0x18                  	// oriansj#24
  4000d8:	d2800320 	mov	x0, #0x19                  	// oriansj#25
  4000dc:	d2800340 	mov	x0, #0x1a                  	// oriansj#26
  4000e0:	d2800360 	mov	x0, #0x1b                  	// oriansj#27
  4000e4:	d2800380 	mov	x0, #0x1c                  	// oriansj#28
  4000e8:	d28003a0 	mov	x0, #0x1d                  	// oriansj#29
  4000ec:	d28003c0 	mov	x0, #0x1e                  	// oriansj#30
  4000f0:	d28003e0 	mov	x0, #0x1f                  	// oriansj#31
  4000f4:	d2800400 	mov	x0, #0x20                  	// oriansj#32
  4000f8:	d2800420 	mov	x0, #0x21                  	// oriansj#33
  4000fc:	d2800440 	mov	x0, #0x22                  	// oriansj#34
  400100:	d2800460 	mov	x0, #0x23                  	// oriansj#35
  400104:	d2800480 	mov	x0, #0x24                  	// oriansj#36
  400108:	d28004a0 	mov	x0, #0x25                  	// oriansj#37
  40010c:	d28004c0 	mov	x0, #0x26                  	// oriansj#38
  400110:	d28004e0 	mov	x0, #0x27                  	// oriansj#39
  400114:	d2800500 	mov	x0, #0x28                  	// oriansj#40
  400118:	d2800520 	mov	x0, #0x29                  	// oriansj#41
  40011c:	d2800540 	mov	x0, #0x2a                  	// oriansj#42
  400120:	d2800560 	mov	x0, #0x2b                  	// oriansj#43
  400124:	d2800580 	mov	x0, #0x2c                  	// oriansj#44
  400128:	d28005a0 	mov	x0, #0x2d                  	// oriansj#45
  40012c:	d28005c0 	mov	x0, #0x2e                  	// oriansj#46
  400130:	d28005e0 	mov	x0, #0x2f                  	// oriansj#47
  400134:	d2800600 	mov	x0, #0x30                  	// oriansj#48
  400138:	d2800620 	mov	x0, #0x31                  	// oriansj#49
  40013c:	d2800640 	mov	x0, #0x32                  	// oriansj#50
  400140:	d2800660 	mov	x0, #0x33                  	// oriansj#51
  400144:	d2800680 	mov	x0, #0x34                  	// oriansj#52
  400148:	d28006a0 	mov	x0, #0x35                  	// oriansj#53
  40014c:	d28006c0 	mov	x0, #0x36                  	// oriansj#54
  400150:	d28006e0 	mov	x0, #0x37                  	// oriansj#55
  400154:	d2800700 	mov	x0, #0x38                  	// oriansj#56
  400158:	d2800720 	mov	x0, #0x39                  	// oriansj#57
  40015c:	d2800740 	mov	x0, #0x3a                  	// oriansj#58
  400160:	d2800760 	mov	x0, #0x3b                  	// oriansj#59
  400164:	d2800780 	mov	x0, #0x3c                  	// oriansj#60
  400168:	d28007a0 	mov	x0, #0x3d                  	// oriansj#61
  40016c:	d28007c0 	mov	x0, #0x3e                  	// oriansj#62
  400170:	d28007e0 	mov	x0, #0x3f                  	// oriansj#63
  400174:	d2800800 	mov	x0, #0x40                  	// oriansj#64
  400178:	d2800820 	mov	x0, #0x41                  	// oriansj#65
  40017c:	d2800840 	mov	x0, #0x42                  	// oriansj#66
  400180:	d2800860 	mov	x0, #0x43                  	// oriansj#67
  400184:	d2800880 	mov	x0, #0x44                  	// oriansj#68
  400188:	d28008a0 	mov	x0, #0x45                  	// oriansj#69
  40018c:	d28008c0 	mov	x0, #0x46                  	// oriansj#70
  400190:	d28008e0 	mov	x0, #0x47                  	// oriansj#71
  400194:	d2800900 	mov	x0, #0x48                  	// oriansj#72
  400198:	d2800920 	mov	x0, #0x49                  	// oriansj#73
  40019c:	d2800940 	mov	x0, #0x4a                  	// oriansj#74
  4001a0:	d2800960 	mov	x0, #0x4b                  	// oriansj#75
  4001a4:	d2800980 	mov	x0, #0x4c                  	// oriansj#76
  4001a8:	d28009a0 	mov	x0, #0x4d                  	// oriansj#77
  4001ac:	d28009c0 	mov	x0, #0x4e                  	// oriansj#78
  4001b0:	d28009e0 	mov	x0, #0x4f                  	// oriansj#79
  4001b4:	d2800a00 	mov	x0, #0x50                  	// oriansj#80
  4001b8:	d2800a20 	mov	x0, #0x51                  	// oriansj#81
  4001bc:	d2800a40 	mov	x0, #0x52                  	// oriansj#82
  4001c0:	d2800a60 	mov	x0, #0x53                  	// oriansj#83
  4001c4:	d2800a80 	mov	x0, #0x54                  	// oriansj#84
  4001c8:	d2800aa0 	mov	x0, #0x55                  	// oriansj#85
  4001cc:	d2800ac0 	mov	x0, #0x56                  	// oriansj#86
  4001d0:	d2800ae0 	mov	x0, #0x57                  	// oriansj#87
  4001d4:	d2800b00 	mov	x0, #0x58                  	// oriansj#88
  4001d8:	d2800b20 	mov	x0, #0x59                  	// oriansj#89
  4001dc:	d2800b40 	mov	x0, #0x5a                  	// oriansj#90
  4001e0:	d2800b60 	mov	x0, #0x5b                  	// oriansj#91
  4001e4:	d2800b80 	mov	x0, #0x5c                  	// oriansj#92
  4001e8:	d2800ba0 	mov	x0, #0x5d                  	// oriansj#93
  4001ec:	d2800bc0 	mov	x0, #0x5e                  	// oriansj#94
  4001f0:	d2800be0 	mov	x0, #0x5f                  	// oriansj#95
  4001f4:	d2800c00 	mov	x0, #0x60                  	// oriansj#96
  4001f8:	d2800c20 	mov	x0, #0x61                  	// oriansj#97
  4001fc:	d2800c40 	mov	x0, #0x62                  	// oriansj#98
  400200:	d2800c60 	mov	x0, #0x63                  	// oriansj#99
  400204:	d2800c80 	mov	x0, #0x64                  	// oriansj#100
  400208:	d2800ca0 	mov	x0, #0x65                  	// oriansj#101
  40020c:	d2800cc0 	mov	x0, #0x66                  	// oriansj#102
  400210:	d2800ce0 	mov	x0, #0x67                  	// oriansj#103
  400214:	d2800d00 	mov	x0, #0x68                  	// oriansj#104
  400218:	d2800d20 	mov	x0, #0x69                  	// oriansj#105
  40021c:	d2800d40 	mov	x0, #0x6a                  	// oriansj#106
  400220:	d2800d60 	mov	x0, #0x6b                  	// oriansj#107
  400224:	d2800d80 	mov	x0, #0x6c                  	// oriansj#108
  400228:	d2800da0 	mov	x0, #0x6d                  	// oriansj#109
  40022c:	d2800dc0 	mov	x0, #0x6e                  	// oriansj#110
  400230:	d2800de0 	mov	x0, #0x6f                  	// #111
  400234:	d2800e00 	mov	x0, #0x70                  	// #112
  400238:	d2800e20 	mov	x0, #0x71                  	// #113
  40023c:	d2800e40 	mov	x0, #0x72                  	// #114
  400240:	d2800e60 	mov	x0, #0x73                  	// #115
  400244:	d2800e80 	mov	x0, #0x74                  	// #116
  400248:	d2800ea0 	mov	x0, #0x75                  	// #117
  40024c:	d2800ec0 	mov	x0, #0x76                  	// #118
  400250:	d2800ee0 	mov	x0, #0x77                  	// #119
  400254:	d2800f00 	mov	x0, #0x78                  	// #120
  400258:	d2800f20 	mov	x0, #0x79                  	// #121
  40025c:	d2800f40 	mov	x0, #0x7a                  	// #122
  400260:	d2800f60 	mov	x0, #0x7b                  	// #123
  400264:	d2800f80 	mov	x0, #0x7c                  	// #124
  400268:	d2800fa0 	mov	x0, #0x7d                  	// #125
  40026c:	d2800fc0 	mov	x0, #0x7e                  	// #126
  400270:	d2800fe0 	mov	x0, #0x7f                  	// #127
  400274:	d2801000 	mov	x0, #0x80                  	// #128
  400278:	d2801fe0 	mov	x0, #0xff                  	// #255
  40027c:	d2802000 	mov	x0, #0x100                 	// #256
  400280:	d2803000 	mov	x0, #0x180                 	// #384
  400284:	d2804000 	mov	x0, #0x200                 	// #512
  400288:	d2804820 	mov	x0, #0x241                 	// #577
  40028c:	d2808000 	mov	x0, #0x400                 	// #1024
  400290:	d2820000 	mov	x0, #0x1000                	// #4096
  400294:	d2a00020 	mov	x0, #0x10000               	// #65536
  400298:	d2a00080 	mov	x0, #0x40000               	// #262144
```
gtker added a commit to gtker/M2libc that referenced this pull request Oct 27, 2025
```
.global _start
_start:
mov x0,1
mov x0,2
mov x0,3
mov x0,4
mov x0,5
mov x0,6
mov x0,7
mov x0,8
mov x0,9
mov x0,10
mov x0,11
mov x0,12
mov x0,13
mov x0,14
mov x0,15
mov x0,16
mov x0,17
mov x0,18
mov x0,19
mov x0,20
mov x0,21
mov x0,22
mov x0,23
mov x0,24
mov x0,25
mov x0,26
mov x0,27
mov x0,28
mov x0,29
mov x0,30
mov x0,31
mov x0,32
mov x0,33
mov x0,34
mov x0,35
mov x0,36
mov x0,37
mov x0,38
mov x0,39
mov x0,40
mov x0,41
mov x0,42
mov x0,43
mov x0,44
mov x0,45
mov x0,46
mov x0,47
mov x0,48
mov x0,49
mov x0,50
mov x0,51
mov x0,52
mov x0,53
mov x0,54
mov x0,55
mov x0,56
mov x0,57
mov x0,58
mov x0,59
mov x0,60
mov x0,61
mov x0,62
mov x0,63
mov x0,64
mov x0,65
mov x0,66
mov x0,67
mov x0,68
mov x0,69
mov x0,70
mov x0,71
mov x0,72
mov x0,73
mov x0,74
mov x0,75
mov x0,76
mov x0,77
mov x0,78
mov x0,79
mov x0,80
mov x0,81
mov x0,82
mov x0,83
mov x0,84
mov x0,85
mov x0,86
mov x0,87
mov x0,88
mov x0,89
mov x0,90
mov x0,91
mov x0,92
mov x0,93
mov x0,94
mov x0,95
mov x0,96
mov x0,97
mov x0,98
mov x0,99
mov x0,100
mov x0,101
mov x0,102
mov x0,103
mov x0,104
mov x0,105
mov x0,106
mov x0,107
mov x0,108
mov x0,109
mov x0,110
mov x0,111
mov x0,112
mov x0,113
mov x0,114
mov x0,115
mov x0,116
mov x0,117
mov x0,118
mov x0,119
mov x0,120
mov x0,121
mov x0,122
mov x0,123
mov x0,124
mov x0,125
mov x0,126
mov x0,127
mov x0,128

mov x0,255
mov x0,256
mov x0,384
mov x0,512
mov x0,577
mov x0,1024
mov x0,4096
mov x0,65536
mov x0,262144
```

```

main:     file format elf64-littleaarch64

Disassembly of section .text:

0000000000400078 <_start>:
  400078:	d2800020 	mov	x0, #0x1                   	// oriansj#1
  40007c:	d2800040 	mov	x0, #0x2                   	// oriansj#2
  400080:	d2800060 	mov	x0, #0x3                   	// oriansj#3
  400084:	d2800080 	mov	x0, #0x4                   	// oriansj#4
  400088:	d28000a0 	mov	x0, #0x5                   	// oriansj#5
  40008c:	d28000c0 	mov	x0, #0x6                   	// oriansj#6
  400090:	d28000e0 	mov	x0, #0x7                   	// oriansj#7
  400094:	d2800100 	mov	x0, #0x8                   	// oriansj#8
  400098:	d2800120 	mov	x0, #0x9                   	// oriansj#9
  40009c:	d2800140 	mov	x0, #0xa                   	// oriansj#10
  4000a0:	d2800160 	mov	x0, #0xb                   	// oriansj#11
  4000a4:	d2800180 	mov	x0, #0xc                   	// oriansj#12
  4000a8:	d28001a0 	mov	x0, #0xd                   	// oriansj#13
  4000ac:	d28001c0 	mov	x0, #0xe                   	// oriansj#14
  4000b0:	d28001e0 	mov	x0, #0xf                   	// oriansj#15
  4000b4:	d2800200 	mov	x0, #0x10                  	// oriansj#16
  4000b8:	d2800220 	mov	x0, #0x11                  	// oriansj#17
  4000bc:	d2800240 	mov	x0, #0x12                  	// oriansj#18
  4000c0:	d2800260 	mov	x0, #0x13                  	// oriansj#19
  4000c4:	d2800280 	mov	x0, #0x14                  	// oriansj#20
  4000c8:	d28002a0 	mov	x0, #0x15                  	// oriansj#21
  4000cc:	d28002c0 	mov	x0, #0x16                  	// oriansj#22
  4000d0:	d28002e0 	mov	x0, #0x17                  	// oriansj#23
  4000d4:	d2800300 	mov	x0, #0x18                  	// oriansj#24
  4000d8:	d2800320 	mov	x0, #0x19                  	// oriansj#25
  4000dc:	d2800340 	mov	x0, #0x1a                  	// oriansj#26
  4000e0:	d2800360 	mov	x0, #0x1b                  	// oriansj#27
  4000e4:	d2800380 	mov	x0, #0x1c                  	// oriansj#28
  4000e8:	d28003a0 	mov	x0, #0x1d                  	// oriansj#29
  4000ec:	d28003c0 	mov	x0, #0x1e                  	// oriansj#30
  4000f0:	d28003e0 	mov	x0, #0x1f                  	// oriansj#31
  4000f4:	d2800400 	mov	x0, #0x20                  	// oriansj#32
  4000f8:	d2800420 	mov	x0, #0x21                  	// oriansj#33
  4000fc:	d2800440 	mov	x0, #0x22                  	// oriansj#34
  400100:	d2800460 	mov	x0, #0x23                  	// oriansj#35
  400104:	d2800480 	mov	x0, #0x24                  	// oriansj#36
  400108:	d28004a0 	mov	x0, #0x25                  	// oriansj#37
  40010c:	d28004c0 	mov	x0, #0x26                  	// oriansj#38
  400110:	d28004e0 	mov	x0, #0x27                  	// oriansj#39
  400114:	d2800500 	mov	x0, #0x28                  	// oriansj#40
  400118:	d2800520 	mov	x0, #0x29                  	// oriansj#41
  40011c:	d2800540 	mov	x0, #0x2a                  	// oriansj#42
  400120:	d2800560 	mov	x0, #0x2b                  	// oriansj#43
  400124:	d2800580 	mov	x0, #0x2c                  	// oriansj#44
  400128:	d28005a0 	mov	x0, #0x2d                  	// oriansj#45
  40012c:	d28005c0 	mov	x0, #0x2e                  	// oriansj#46
  400130:	d28005e0 	mov	x0, #0x2f                  	// oriansj#47
  400134:	d2800600 	mov	x0, #0x30                  	// oriansj#48
  400138:	d2800620 	mov	x0, #0x31                  	// oriansj#49
  40013c:	d2800640 	mov	x0, #0x32                  	// oriansj#50
  400140:	d2800660 	mov	x0, #0x33                  	// oriansj#51
  400144:	d2800680 	mov	x0, #0x34                  	// oriansj#52
  400148:	d28006a0 	mov	x0, #0x35                  	// oriansj#53
  40014c:	d28006c0 	mov	x0, #0x36                  	// oriansj#54
  400150:	d28006e0 	mov	x0, #0x37                  	// oriansj#55
  400154:	d2800700 	mov	x0, #0x38                  	// oriansj#56
  400158:	d2800720 	mov	x0, #0x39                  	// oriansj#57
  40015c:	d2800740 	mov	x0, #0x3a                  	// oriansj#58
  400160:	d2800760 	mov	x0, #0x3b                  	// oriansj#59
  400164:	d2800780 	mov	x0, #0x3c                  	// oriansj#60
  400168:	d28007a0 	mov	x0, #0x3d                  	// oriansj#61
  40016c:	d28007c0 	mov	x0, #0x3e                  	// oriansj#62
  400170:	d28007e0 	mov	x0, #0x3f                  	// oriansj#63
  400174:	d2800800 	mov	x0, #0x40                  	// oriansj#64
  400178:	d2800820 	mov	x0, #0x41                  	// oriansj#65
  40017c:	d2800840 	mov	x0, #0x42                  	// oriansj#66
  400180:	d2800860 	mov	x0, #0x43                  	// oriansj#67
  400184:	d2800880 	mov	x0, #0x44                  	// oriansj#68
  400188:	d28008a0 	mov	x0, #0x45                  	// oriansj#69
  40018c:	d28008c0 	mov	x0, #0x46                  	// oriansj#70
  400190:	d28008e0 	mov	x0, #0x47                  	// oriansj#71
  400194:	d2800900 	mov	x0, #0x48                  	// oriansj#72
  400198:	d2800920 	mov	x0, #0x49                  	// oriansj#73
  40019c:	d2800940 	mov	x0, #0x4a                  	// oriansj#74
  4001a0:	d2800960 	mov	x0, #0x4b                  	// oriansj#75
  4001a4:	d2800980 	mov	x0, #0x4c                  	// oriansj#76
  4001a8:	d28009a0 	mov	x0, #0x4d                  	// oriansj#77
  4001ac:	d28009c0 	mov	x0, #0x4e                  	// oriansj#78
  4001b0:	d28009e0 	mov	x0, #0x4f                  	// oriansj#79
  4001b4:	d2800a00 	mov	x0, #0x50                  	// oriansj#80
  4001b8:	d2800a20 	mov	x0, #0x51                  	// oriansj#81
  4001bc:	d2800a40 	mov	x0, #0x52                  	// oriansj#82
  4001c0:	d2800a60 	mov	x0, #0x53                  	// oriansj#83
  4001c4:	d2800a80 	mov	x0, #0x54                  	// oriansj#84
  4001c8:	d2800aa0 	mov	x0, #0x55                  	// oriansj#85
  4001cc:	d2800ac0 	mov	x0, #0x56                  	// oriansj#86
  4001d0:	d2800ae0 	mov	x0, #0x57                  	// oriansj#87
  4001d4:	d2800b00 	mov	x0, #0x58                  	// oriansj#88
  4001d8:	d2800b20 	mov	x0, #0x59                  	// oriansj#89
  4001dc:	d2800b40 	mov	x0, #0x5a                  	// oriansj#90
  4001e0:	d2800b60 	mov	x0, #0x5b                  	// oriansj#91
  4001e4:	d2800b80 	mov	x0, #0x5c                  	// oriansj#92
  4001e8:	d2800ba0 	mov	x0, #0x5d                  	// oriansj#93
  4001ec:	d2800bc0 	mov	x0, #0x5e                  	// oriansj#94
  4001f0:	d2800be0 	mov	x0, #0x5f                  	// oriansj#95
  4001f4:	d2800c00 	mov	x0, #0x60                  	// oriansj#96
  4001f8:	d2800c20 	mov	x0, #0x61                  	// oriansj#97
  4001fc:	d2800c40 	mov	x0, #0x62                  	// oriansj#98
  400200:	d2800c60 	mov	x0, #0x63                  	// oriansj#99
  400204:	d2800c80 	mov	x0, #0x64                  	// oriansj#100
  400208:	d2800ca0 	mov	x0, #0x65                  	// oriansj#101
  40020c:	d2800cc0 	mov	x0, #0x66                  	// oriansj#102
  400210:	d2800ce0 	mov	x0, #0x67                  	// oriansj#103
  400214:	d2800d00 	mov	x0, #0x68                  	// oriansj#104
  400218:	d2800d20 	mov	x0, #0x69                  	// oriansj#105
  40021c:	d2800d40 	mov	x0, #0x6a                  	// oriansj#106
  400220:	d2800d60 	mov	x0, #0x6b                  	// oriansj#107
  400224:	d2800d80 	mov	x0, #0x6c                  	// oriansj#108
  400228:	d2800da0 	mov	x0, #0x6d                  	// oriansj#109
  40022c:	d2800dc0 	mov	x0, #0x6e                  	// oriansj#110
  400230:	d2800de0 	mov	x0, #0x6f                  	// #111
  400234:	d2800e00 	mov	x0, #0x70                  	// #112
  400238:	d2800e20 	mov	x0, #0x71                  	// #113
  40023c:	d2800e40 	mov	x0, #0x72                  	// #114
  400240:	d2800e60 	mov	x0, #0x73                  	// #115
  400244:	d2800e80 	mov	x0, #0x74                  	// #116
  400248:	d2800ea0 	mov	x0, #0x75                  	// #117
  40024c:	d2800ec0 	mov	x0, #0x76                  	// #118
  400250:	d2800ee0 	mov	x0, #0x77                  	// #119
  400254:	d2800f00 	mov	x0, #0x78                  	// #120
  400258:	d2800f20 	mov	x0, #0x79                  	// #121
  40025c:	d2800f40 	mov	x0, #0x7a                  	// #122
  400260:	d2800f60 	mov	x0, #0x7b                  	// #123
  400264:	d2800f80 	mov	x0, #0x7c                  	// #124
  400268:	d2800fa0 	mov	x0, #0x7d                  	// #125
  40026c:	d2800fc0 	mov	x0, #0x7e                  	// #126
  400270:	d2800fe0 	mov	x0, #0x7f                  	// #127
  400274:	d2801000 	mov	x0, #0x80                  	// #128
  400278:	d2801fe0 	mov	x0, #0xff                  	// #255
  40027c:	d2802000 	mov	x0, #0x100                 	// #256
  400280:	d2803000 	mov	x0, #0x180                 	// #384
  400284:	d2804000 	mov	x0, #0x200                 	// #512
  400288:	d2804820 	mov	x0, #0x241                 	// #577
  40028c:	d2808000 	mov	x0, #0x400                 	// #1024
  400290:	d2820000 	mov	x0, #0x1000                	// #4096
  400294:	d2a00020 	mov	x0, #0x10000               	// #65536
  400298:	d2a00080 	mov	x0, #0x40000               	// #262144
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants