Kan*_*rus 0 assembly x86-64 endianness
我是汇编语言的新手.我正在尝试下面的代码,你可以看到下面的代码.
bits 64
global _start
section .text
_start:
mov rcx, 1234567890
xor rcx, rcx
mov rcx, 'wxyz'
mov rax, 60
mov rdi, 0
syscall
Run Code Online (Sandbox Code Playgroud)
我想知道为什么数字在寄存器中存储为Big endian,字符作为Little-endian存储在寄存器中
我以为只在内存中,数据存储为Little endian.但我不明白为什么字符在寄存器中存储为Little endian.请告诉我.
谢谢.
说到CPU寄存器的字节序没有多大意义,因为地址没有分配给构成寄存器的特定字节,即:没有字节顺序要考虑.
也就是说,例如al
是最低字节rax
,ah
第二低字节.考虑到这一点,al
和的地址是ah
什么?是ah
的地址高于或低于al
地址?它们没有关联的(存储器)地址,因此根本没有字节顺序需要考虑.
相关的是这些字节如何存储到存储器中(例如:通过mov
指令).字节序决定了这一点.对于小端机器,寄存器的最低字节将放置在目标操作数的最低地址,对于最高地址的大端机器.字节顺序与将内存操作数加载到寄存器中类似.
简而言之,为了谈论字节序,必须在字节的重要性和它们相应地址的高度之间进行一种映射.
归档时间: |
|
查看次数: |
667 次 |
最近记录: |