当前位置: 代码迷 >> C语言 >> C语言是怎么寻址的?
  详细解决方案

C语言是怎么寻址的?

热度:284   发布时间:2008-04-22 11:55:25.0
C语言是怎么寻址的?
汇编有段地址 便宜地址
不知C是怎么寻址的?
请告手指教。
搜索更多相关的解决方案: C语言  寻址  

----------------解决方案--------------------------------------------------------
>>汇编有段地址

这个概念过时了

[color=white]
----------------解决方案--------------------------------------------------------
:)
----------------解决方案--------------------------------------------------------
请高手指教。谢谢!
----------------解决方案--------------------------------------------------------
自己顶!
----------------解决方案--------------------------------------------------------
顶 顶 顶 !
----------------解决方案--------------------------------------------------------
现在的cpu少则32位,有的也支持64位寻址,直接和内存一一对应不就行了么?

32位的cpu寻址至少能寻到4gb吧。
----------------解决方案--------------------------------------------------------
这就是高级语言和低级语言的区别
----------------解决方案--------------------------------------------------------
内存寻址
----------------解决方案--------------------------------------------------------
举个简单的例子,平台win32
int main(){
    int a=1;
    int b=2;
    int c;
    c=a+b;
    return 0;
}
代码生成exe文件后,也是按照段来组织程序的,对于a,b,c三个变量的声明编译器会生成一个数据段,里面存放三个变量,对于语句c=a+b,编译器会生成一个代码段,当然代码段里面还会有其它的一些和程序相关的代码,而且编译器可能还会生成其它的一些段,C语言其实和汇编是一个概念,只是隐藏了一些底层的细节,比如就代码c=a+b而言,用汇编实现的话可能是这样:mov eax,a add eax,b mov c,eax代码不是很准确,只是举个例子,无论是汇编还是C代码,最后生成的都是基于特定操作系统和特定环境的二进制文件,他们的最终目的都是一样的,只是C代码更具可读性,汇编一般都是用寄存器来寻址的,而C封装了寄存器寻址的复杂性,只用简单的变量和指针来寻址数据或代码
----------------解决方案--------------------------------------------------------
  相关解决方案