64비트 어셈블리 언어: Aarch64 VS. X84_64
어셈블러 언어 지침을 본 적이 없다면 여기 이 실습을 위한 Aarch64 시스템용 소스 코드가 있습니다.
아크64
.text
.globl _start
min = 0 /* starting value for the loop index; note that this is a symbol (constant), not a variable */
max = 31 /* loop exits when the index hits this number (loop condition is i<max) */
_start:
mov x19, min
mov x17, 10
loop:
mov x0, 1 /* file descriptor: 1 is stdout */
adr x1, msg /* message location (memory address) */
mov x2, len /* message length (bytes) */
mov x18, x19 /*mov x19 into x18 */
udiv x9, x18, x17
add x13, x9, 0x30
msub x10, x9, x17, x18 /*get remainder*/
add x14, x10, 0x30
adr x15, msg
strb w13, [x15, 13]
strb w14, [x15, 14]
mov x8, 64 /* write is syscall #64 */
svc 0 /* invoke syscall */
add x19, x19, 1
cmp x19, max
b.ne loop
.data
msg: .ascii "Hello, World #\n"
len= . - msg
이것은 특정server에서 이 코드를 빌드하는 방법입니다.
이것은 소스 코드의 출력입니다.
지금 이스라엘 서버에서 내 나무가 어떻게 보이는지 관심 있는 분들을 위해.
X84_64
다음은 거의 동일한 코드이지만 다른 시스템에 대한 것입니다.
/*
This is a 'hello world' program in x86_64 assembler using the
GNU assembler (gas) syntax. Note that this program runs in 64-bit
mode.
CTyler, Seneca College, 2014-01-20
Licensed under GNU GPL v2+
*/
.text
.globl _start
_start:
movq $0, %r15 /* Loop counter */
movq $0x30, %r12 /* value of 0 in Ascii */
loop:
movq $0, %rdx /* clearing reminder for division */
movq %r15, %rax /* set rax to be divide */
movq $10, %r10 /* set divisor */
div %r10 /* divide */
movq %rax, %r14 /* store quotient */
movq %rdx, %r13 /* store remainder */
add $0x30, %r14 /* quotient to ascii */
add $0x30, %r13 /* remainder to ascii */
mov %r13b, msg+14 /* Modify 1 byte inmsg with remainder */
cmp %r12, %r14
mov %r14b, msg+13 /* Modify 1 byte in msg with quotient */
movq $len, %rdx /* message length */
movq $msg, %rsi /* message location */
movq $1, %rdi /* file descriptor stdout */
movq $1, %rax /* syscall sys_write */
syscall
inc %r15 /* increment counter */
cmp $31, %r15 /* see if we're done */
jne loop /* if not, loop */
movq $0, %rdi /* exit status */
movq $60, %rax /* syscall sys_exit */
syscall
.section .data
msg: .ascii "Hello World: \n"
len = . - msg
~
다른 서버에서.
결론
⚠️ 컴퓨터 아키텍처 블로그 게시물: 링크
연결
🖇 팔로우GitHub
🖇 팔로우
_p.s 이 게시물은 내 소프트웨어 이식성 및 최적화 수업을 위해 작성되었습니다.
Reference
이 문제에 관하여(64비트 어셈블리 언어: Aarch64 VS. X84_64), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/serputov/64-bit-assembly-language-aarch64-vs-x8464-4glb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)