text,bss, data 段中 text不可写由谁去保证
大侠们,
我知道程序在编译后会生成在, text,bss, data等段。 text 是代码段,只读。 那我不知道这是不可写是由谁去保证? 编译器? 如果我们编译一个IMAGE, 在程序中强制修改LOad以后的内存内容,会怎么样?
[解决办法]
你生成a.out以后跟你的编译器就没有什么关系拉,所以test段的安全保障是由OS保证的 如果a.out被修改就会出现断错误
[解决办法]
我觉得吧,会有这些段是编译器的功劳,当然,在使用编译器的时候,用户根据自己所使用的芯片的特性和设计在编译器选项中设定.text,.bss,.data的起始地址。一般是将芯片的只读区域(rom)作为.text的存储区。至于用户愣是要在写代码的时候,修改.text的内容,也木有办法,如果.text是在rom区,则写了也白写,因为写不进去,所以程序不能实现所需的功能,程序可能会崩溃的;如果.text是在ram区,则写操作会修改.text内容,程序会崩溃。所以用户可以自己写防护代码,防止在.text段进行写操作。
个人理解,若有误导请海涵。。
[解决办法]
操作系统的装载器、内存管理器加上cpu