This program takes the command line argument and fill write_key array
#include <stdio.h>
#include <stdlib.h>
 int main(int argc, char **argv)
 {
   int i,j;
   unsigned char write_key[16];
   for(j=0;j<4;j++){
     for(i=0;i<4;i++){
       write_key[j*4 + i] = (strtol(argv[1+j],NULL,16)>>(8*(4-1-i))) & 0xff;
     }
   }
   for(i=0;i<16;i++){
     printf("write_key[%d] :: 0x%x   \n", i, writekey[i]);
   }
  printf("\n");
}
I launch the program with
./app 0xffffffff 0xffffffff 0xffffffff 0xffffffff 
For following input output on my linux pc is
write_key[0] :: 0xff   
write_key[1] :: 0xff   
write_key[2] :: 0xff   
write_key[3] :: 0xff   
write_key[4] :: 0xff   
write_key[5] :: 0xff   
write_key[6] :: 0xff   
write_key[7] :: 0xff   
write_key[8] :: 0xff   
write_key[9] :: 0xff   
write_key[10] :: 0xff   
write_key[11] :: 0xff   
write_key[12] :: 0xff   
write_key[13] :: 0xff   
write_key[14] :: 0xff   
write_key[15] :: 0xff
Which is as expected. but when i cross compiled this program for Mips based embedded board and run it there my output is.
write_key[0] :: 0x7f   
write_key[1] :: 0xff   
write_key[2] :: 0xff   
write_key[3] :: 0xff   
write_key[4] :: 0x7f   
write_key[5] :: 0xff   
write_key[6] :: 0xff   
write_key[7] :: 0xff   
write_key[8] :: 0x7f   
write_key[9] :: 0xff   
write_key[10] :: 0xff   
write_key[11] :: 0xff   
write_key[12] :: 0x7f   
write_key[13] :: 0xff   
write_key[14] :: 0xff   
write_key[15] :: 0xff 
Why there is a difference in output for different architecture ?
 
     
     
     
    