数据在内存中是高字节在前还是低字节在前
比如我有一个int型变量哪种编译器是把高8位放在内存中较低的位置?我用过的ICCAVR和GCC都是低8位在较低的位置 低字节在低地址。一般都是这样安排的,至少我碰到的8位、32位系统都这样。如果哪个系统不是这样的,请朋友们指点。 好像51的十六位数据是高位在前低位在后,
mov dprt,#2000h
就是20在前,00在后。 keil c51 是高8位在低端内存的
但是不知道keil出没出AVR的编译器 mov dprt ,#2000h是什么??是不是 dptr 哦?? 呵呵,51系列的存放地址好像就是高字节在前,这方面AVR更符合逻辑 不同的内核, 采用大端或小端模式是不同的. 比如ARM就同时支持两种模式...
这个问题在多种不同的内核模式的系统通讯上面就比较重要了, 需要转换成相同的顺序... 低字节在前,可以从16位寄存器看出来,例子:ADCL和ADC的指针一样,都是0x24,ADCH的指针就是0x25,从这个可以看出来了:低地址在前。 大端小端必须时刻注意... hotpower有所指:
看一下:hotpower的"MCUDEFINE.H"。
要明确BIT,BYTE,INT,LONG关系。 ICC AVR的是低8位在低端内存地址,其它的编译器没用过!楼上有说GCC的也是这样,那IAR的会不会不同呢?还是跟硬件有关系的? 处理器模式常说的大小端模式,就是指这种情况。低字节在低地址,就是所谓的小端模式。
页:
[1]