zoukankan      html  css  js  c++  java
  • pwn学习日记Day14 《程序员的自我修养》读书笔记

    目标文件:计算机科学中存放目标代码的计算机文件,包含着机器代码,代码在运行时使用的数据,调试信息等,是从源代码文件产生程序文件这一过程的中间产物。
    目标代码(objectcode)指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成。目标文件(objectfile)即存放目标代码的计算机文件,它常被称作二进制文件(binaries)。
    目标文件包含着机器代码(可直接被计算机中央处理器执行)以及代码在运行时使用的数据,如重定位信息,如用于链接或调试的程序符号(变量和函数的名字),此外还包括其他调试信息。目标文件是从源代码文件产生程序文件这一过程的中间产物,链接器正是通过把目标文件链接在一起来生成可执行文件或库文件。目标文件中唯一的要素是机器代码,例如,用于嵌入式系统的目标文件可能仅仅含有机器代码。
    寻址方式的区别:

    • 近址寻址或远址寻址
    • 绝对寻址或相对寻址
    • 寻址长度为8位、16位、32位或64位
      但是对于32位x86平台下的elf文件的重定位入口所修正的指令寻址方式只有两种:
    • 绝对近址32位寻址
    • 相对近址32位寻址

    ABI:application binary interface
    API:application programming interface
    C为例子决定二进制文件是否兼容:

    • 内置类型(int)的大小和在存储器中的放置方式(大小端、文件对齐)
    • 组合类型(数组、struct、union)的存储方式和内存分布
    • 外部符号与用户定义的符号之间的命名方式和解析方式(func函数在C语言目标文件中是否被解析成外部符号_func)
    • 函数调用方式(参数入栈顺序、返回值如何保持)
    • 堆栈的分布方式(参数和局部变量在堆栈中的位置、参数的传递方法)
    • 寄存器使用约定(函数调用时哪些寄存器可以修改,哪些须要保存)
  • 相关阅读:
    spring bean的作用域
    Web前端开发CSS规范总结
    前端技术都包含哪些?
    Web安全常见问题及解决方法
    如何让手游更省带宽,耗电量更少?TBR渲染架构解析!
    新手学Java,有哪些入门知识点?
    如何让手游内存占用更小?从内存消耗iOS实时统计开始
    动作游戏老是卡?试试从这些方面提升流畅度
    开发者必知!2020年大前端发展趋势解读
    游戏编程入门! 想成为专业的游戏开发程序员需要掌握哪些?
  • 原文地址:https://www.cnblogs.com/luoleqi/p/10839830.html
Copyright © 2011-2022 走看看