进程运行必须占用内存,运行之前就已定义好的即为静态分配,运行时分配的便是动态分配。5种类型:1. 代码段 .text 存放指令代码,属性为只读。很多人不理解为什么哈弗结构既然是 .text 和 .data 分离,那只有一个RAM ,怎么解释呢,其实这很简单啊,IA32不是有选择子么 数据段有数据段的选择字,有数据段的属性,代码段有代码段的属性,有它的选择字,ARM 也无非就是将段分成不同的属性来管理,一个介质RAM搞定。2. 数据段 .data 存放已初始化数据,这个真没啥好说的。3. BSS段 .bss 存放未初始化全局变量,由此一同事问我,为什么BSS不需要占用 ... Read More
posted @ 2013-10-13 17:46 moon_cat Views(269) Comments(0) Diggs(0) Edit
unsigned 和 signed 之间的转化赋值非常容易被弄错,例如经典的 (-1)和 0xFFFFFFFF比较。如下: unsigned short i = -1; if (0xFFFFFFFF == i) { ..... ; /* this will not be executed forever ! */ }鉴于经常被弄错,我现在总结一下,转化规则,有几个情形:1.同位宽,同符号2.同位宽,不同符号,这个情况,就是几条mov dword [xxxx],xxxx 语句,所以操作的必然就是机器数,-1 即为 0xFFFFFFFF; 因此我们发现,不论是 : un... Read More
posted @ 2013-10-12 01:11 moon_cat Views(1704) Comments(0) Diggs(0) Edit
unsigned 和 signed 混合运算总是被问及,我这里总结一下。这里的几个情况:1.同等数据宽度,只要出现 unsigned ,皆以unsigned 运算。2. 同等符号前缀,自动转化为大位宽大数据范围处理,如 unsigned long long 和 unsigned int ,总以 unsigned long long 处理.3.不同数据宽度且不同数据符号前缀: unsigned short 和 int ,皆转化为 int 。 int a = -2; unsigned short = 1; a / b 等于 -2 ,因为以 int 计算; int a =... Read More
posted @ 2013-10-11 23:10 moon_cat Views(1298) Comments(0) Diggs(0) Edit
1 1.grub> loopback loop (hd0,1)/ubuntu.iso2 2.grub> set root=(loop)3 3.grub> linux /casper/vmlinuz boot=casper iso-scan/filename=/ubuntu.iso4 4.grub> initrd /casper/initrd.lz5 5.grub> boot Read More
posted @ 2013-09-02 23:17 moon_cat Views(212) Comments(0) Diggs(0) Edit
在grub界面, 按e 在 splash 后加 text ,按 ctrl + x 进入 终端模式然后更新到 3.5 内核即可$ sudo apt-get install linux-generic-lts-quantal xserver-xorg-lts-quantal $ sudo dpkg-reconfigure xserver-xorg-lts-quantal$ sudo reboot Read More
posted @ 2013-05-04 21:30 moon_cat Views(723) Comments(0) Diggs(0) Edit
# sed -i 's/old/new/g' 'grep -rl DIR'or # perl -pi 's|old|new|g' `find DIR ! -type d` Read More
posted @ 2013-04-30 15:28 moon_cat Views(196) Comments(0) Diggs(0) Edit
如果你用过 bochs ,然后现在转而开发arm ,那么你一定会急需一个能像 bochs 那样的模拟软件来模拟一个 arm运行环境,那么这篇文章很适合你1.安装 skyeye下载地址 : http://sourceforge.net/projects/skyeye$ tar -vxzf skyeye xxxx.tar.gz -C DIR $ cd DIR $ make lib $ make $ sudo make install$ sudo make install_lib2.修改路径:$ vim /etc/profileexport PATH=$PATH:/opt/skyeye/binwq$ Read More
posted @ 2013-04-24 14:46 moon_cat Views(320) Comments(0) Diggs(0) Edit
arm 支持4种堆栈分别为1.FD (full decending) 满堆栈递减2.FA (full ascendng) 满堆栈递增3.ED (empty desending ) 空堆栈递减4.EA (empty ascending ) 空堆堆栈的递增我们很熟悉的X86 堆栈操作,一般是堆栈先指向最后一个有效的数据的低地址比如 mov esp ,4096,那么就是制定 0 - 4095 作为堆栈空间了,(ss 为0)(以32位 CPU ,小端模式为例)那么执行 push 操作的时候就是esp -= 4;dword ptr [esp] = xxx;相对应,pop 就是 xxx = dword p Read More
posted @ 2013-04-24 13:11 moon_cat Views(961) Comments(0) Diggs(0) Edit
The ARM Architecture defines a User mode that has 15 generalpurpose registers, a pc, and a CPSR. In addition to this mode thereare five privileged processor modes, each of which have an SPSRand a number of registers that replace some of the 15 User mode generalpurpose registers. Note This section o. Read More
posted @ 2013-04-23 17:00 moon_cat Views(274) Comments(0) Diggs(0) Edit
You will get a error as follows when you're trying to use "mov r2,sp_svc" in your asm file (GNU ARM-LINUX-GCC)error: immediate expression requires a # prefix -- `mov r2,sp_svc' "why ?: it doesn't understand sp_svc, so it thinks you're trying to do an immediate mov, whi Read More
posted @ 2013-04-23 16:04 moon_cat Views(542) Comments(0) Diggs(0) Edit