标题说明了一切.我想知道x86指令何时从内存中读取数据是否会将其字节或其位转换为Little-Endian顺序.例如,如果我们在地址"0"(二进制)中有以下数据(以RAW格式写入,则为sequental):
00110010 01010100
如果我按以下方式阅读:
mov ax, word [0]
Run Code Online (Sandbox Code Playgroud)
'ax'包含什么 - "01010100 00110010"或"00101010 01001100"?或者转换为无符号整数(假设x86 intiger指令将寄存器顺序二进制数据解释为Big-Endian二进制数,与阿拉伯数字相同的字节写入)十进制 - "21554"或"10828"?
Rus*_*mov 11
1.3.1位和字节顺序 x86是little-endian.在存储器中的数据结构的图示中,较小的地址出现在图的底部; 地址增加到顶部.位位置从右到左编号.设定位的数值等于2,增加到位位置的功率.IA-32处理器是"小端"机器; 这意味着字的字节从最低有效字节开始编号.图1-1说明了这些约定.

术语字节序和字节序是指当这些字节存储在计算机存储器中时用于解释构成数据字的字节的约定.在计算中,内存通常通过将二进制数据组织成称为字节的8位单元来存储二进制数据.当读取或写入由多个这样的单元组成的数据字时,存储在存储器中的字节的顺序决定了数据字的解释.
内存中的每个数据字节都有自己的地址.Big-endian系统将字的最高有效字节存储在最小地址中,最低有效字节存储在最大地址中(也见最高有效位).相反,小端系统将最低有效字节存储在最小地址中.
右图显示了使用数据字"0A 0B 0C 0D"(使用从左到右位置,十六进制表示法写出的4个字节的集合)和地址为a,a + 1的4个存储单元的示例, a + 2和a + 3; 然后,在大端系统中,字节0A存储在a,0B中的+ 1,0C中的+ 2和0D中的+ 3中.在小端的系统中,顺序被颠倒以0D存储在存储器地址的,0℃在+ 1,0B在+ 2,0A在+ 3.

所以,你可以看到字节序总是关于字节顺序而不是位.
AFAIK,字节顺序永远不会有点顺序,它总是一个字节顺序,无论哪个处理器.
最低位始终被认为是在"右"侧而最高位在积分值的"左"侧(是1,2,4或8字节值),因此移位或旋转到"对"始终朝向最低位,向左"始终朝向最高位.这与字节顺序无关.
x86是小端,意味着最低字节首先出现(即在最低地址).这意味着,字节0x01,0x02,0x03并0x04以该顺序,可以同样好地看作32位值0x04030201,2个16位的值0x0201和0x04034个单字节(假设字节或八位字节,即8比特值-有字节有其他位大小但不是x86的系统.