我们知道一个程序在执行时需要经过编译,链接,运行。这里来分析一下关于静态链接的内容。我们先来看一下一个程序的执行过程:在Linux下gcc 会直接链接成可执行文件a.out,而gcc -c 就是编译各个源文件成目标文件,即.o结尾的文件。如下图,我们有这样三个简单的函数:main()函数add函数s...
分类:
其他好文 时间:
2015-11-29 22:58:18
阅读次数:
250
在Java应用程序运行时,Java虚拟机会保存一份内部的运行时常量池,它区别于class文件的常量池,是class文件常量池映射到虚拟机中的数据结构。1.CONSTANT_Class入口解析数组类的符号解析较为特殊。若是基本类型数组,那么虚拟机将创建该基本类型的新数组类,并创建一个Class实例来代...
分类:
编程语言 时间:
2015-11-25 15:14:46
阅读次数:
176
目的隐藏源代码只提供给.a与.h文件/*aston.c*/#include<stdio.h>voidfunc1(void){printf("func1inaston.c\n");}intfunc2(inta,intb){printf("func2inaston.c\n");returna+b;}//aston.hvoidfunc1(void);intfunc2(inta,intb);//Makefileall:gccaston.c-oaston.o-car-rcliba..
分类:
其他好文 时间:
2015-11-22 23:37:29
阅读次数:
351
【fixed语句】 fixed语句禁止垃圾回收器重定位可移动的变量。fixed语句只能出现在不安全的上下文中。Fixed还可用于创建固定大小的缓冲区。 fixed语句设置指向托管变量的指针,并在执行该语句期间“固定”此变量。如果没有fixed语句,则指向可移动托管变量的指针的作用很小,因为垃圾回.....
分类:
其他好文 时间:
2015-11-19 20:43:26
阅读次数:
223
首先需要朱有鹏老师,这是在学习了朱老师的课程之后的一点理解,代码是根据朱老师的源码学习之后编写的。根据反汇编代码d0024010:e24f0018subr0,
pc,#24可以看出通过adr汇编伪指令将加载地址写入r0寄存器,此时因为adr指令采用相对寻址的寻址方式所以adr实际写入r0寄存器的地址..
分类:
其他好文 时间:
2015-11-14 23:36:38
阅读次数:
454
运行地址:程序定位的绝对地址,就是编译连接时定位的地址加载地址:程序放置的地址如果程序在flash中运行,运行地址和加载地址相同如果程序存储在flash中运行而是在RAM中运行,则加载地址和运行地址就不同,此时加载地址就是指向flash,运行地址指向RAM重定位的一点感悟:重定..
分类:
其他好文 时间:
2015-11-12 06:43:12
阅读次数:
265
1、编译选项的位置以VS2005为例,这样子打开:1) 打开项目的Property Pages对话框2) 点击左侧C/C++节3) 点击Code Generation节4) 右侧第六行Runtime Library项目2、各个设置选项代表的含义编译选项包含静态链接的lib说明/MD_MT、_DLLM...
分类:
其他好文 时间:
2015-11-10 13:44:48
阅读次数:
321
环境:Win7、VC61、代码: 1 #include 2 #include 3 4 #include 5 #include 6 7 int main() 8 { 9 printf("Sub01 : *stdin : %x\n", *stdin);10 printf("S...
分类:
系统相关 时间:
2015-11-09 15:36:14
阅读次数:
261
Win7 VC61、子进程 代码: 1 #include 2 #include 3 4 int main() 5 { 6 Sleep(1000); 7 8 printf("Sub01 : *stdin : %x\n", *stdin); 9 printf("Sub01...
分类:
系统相关 时间:
2015-11-09 15:31:04
阅读次数:
270
PS:标准输入/标准错误 ,参考这个来弄吧。环境:Win7(32位/64位),VC61、 printf("*stdin : %x\n", *stdin); printf("*stdout : %x\n", *stdout); printf("*stderr : %x\n", *st...
分类:
系统相关 时间:
2015-11-09 12:17:52
阅读次数:
216