编程与软件工程jvns.ca
二进制可执行文件是如何组织的?一起来探个究竟
How is a binary executable organized? Let's explore it (2014)
2014 — 2024,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
这是 Julia Evans 的一篇入门探索:以 Linux 下的二进制可执行文件为对象,拆开看它内部是如何组织的——文件头、段、节等结构分别是什么。文章通过实际查看文件来把“可执行文件是个黑盒”变成可理解的结构。
为什么经久不衰:用清晰可读的方式讲底层格式,让没有系统编程背景的人也能上手探索,因此多年后仍是理解 ELF 与可执行文件的友好入口。
HN 评论精选
推荐 muppetlabs 的“最小 Linux 可执行文件”文章作为延伸阅读。
一篇关于一片绘制良好的海域的精彩论述。对汇编和执行环境等感兴趣的人,另一篇同样思路的好文章当然是著名的 muppetlabs 探索——构建最小的 Linux 可执行文件:http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
ibisum查看英文原文
A nice treatise on a well-charted ocean. Another great article along these lines for those interested in assembly and execution environments and so on .. is of course the famous muppetlabs exploration to build the smallest linux executable: http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
称赞作者在技术深度与可读性之间取得了很好的平衡。
我在 HN 上读过不少 jvns 的文章,每一篇都让我印象深刻:她总能在技术讨论和可读性之间取得平衡。我很喜欢她的写作,也期待她的下一篇。我纯粹因为读她的博客并被打动而申请了 Hacker School。
fnbr查看英文原文
I've read a number of jvns articles on HN [1], and each one impresses me with how she is able to balance technical discussion with readability. I really enjoy her writing, and look forward to her next post. I applied to Hacker School solely on the basis of reading her blogs and being impressed with the work she was doing. [1] Favourite: http://jvns.ca/blog/2013/10/16/day-11-how-does-gzip-work/
推荐 ELF 加载的参考资料,并提到自己在业余内核中实现过 ELF。
如果你想知道如何把 ELF 加载到内存,Wiki 和 OSDev 上都有相当扎实的文章。我在为自己的业余内核实现 ELF 时两者都用过。
alexanderblom查看英文原文
Wiki [1] and OSDev [2] both have pretty solid articles if you want to know how to load an ELF into memory. I used both when implementing ELF for my hobby kernel [3] [1] http://en.wikipedia.org/wiki/Executable_and_Linkable_Format [2] http://wiki.osdev.org/ELF_Tutorial [3] https://github.com/lexs/rust-os/blob/master/rost/exec/elf.rs
设想让 git 理解二进制格式,以优化二进制文件的增量存储。
你觉得有没有可能用某种方式描述二进制文件,让某种 git 扩展能理解该文件,从而让 git 只需保存最小的增量?
phloxicon查看英文原文
Do you think it would be possible to describe a binary file in such a way that some git extension of sorts could be made to understand the file so that only the minimum delta would have to be saved by git?
历次讨论
同类还值得读
开源应用架构
The Architecture of Open Source Applications
《开源软件架构》(AOSA)是一本在线免费书,邀请知名开源项目的作者亲自剖析其内部设计,涵盖 SQLAlchemy、LLVM、Audacity、Apache、Bash 等系统。
编程与软件工程上首页 9 次 · 2011–2024aosabook.org编辑精选编程语言简史:简短、不完整且多半错误
A Brief, Incomplete, and Mostly Wrong History of Programming Languages
一篇以戏谑、故意不准确的方式回顾编程语言史的博客文章,用夸张轶事和讽刺定义串起 Lisp、C、C++、Java、JavaScript、PHP 等语言。
编程与软件工程上首页 8 次 · 2009–2021james-iry.blogspot.comSQLite 是如何测试的
How SQLite is tested
SQLite 官方文档页,系统介绍 SQLite 的测试体系:多种测试方法(TCL 测试、模糊测试、回归测试、静态分析等)和海量测试用例,展示了这个小型开源项目如何靠极致测试获得…
编程与软件工程上首页 8 次 · 2009–2025sqlite.org编辑精选高级编程语言(2009)
Advanced programming languages (2009)
Matt Might 的经典文章,按用途推荐“高级编程语言”:如果追求就业就选主流语言,如果追求表达力、学术研究或创业,则推荐 Haskell、OCaml、Scala 等函数式语…
编程与软件工程上首页 8 次 · 2009–2022matt.might.net我的 Forth 与栈机器经历
Yosefk - My history with Forth & stack machines
作者以亲身经历回顾了使用 Forth 语言和栈式机器的历程:既赞叹其简洁优雅、代码量小、可自举的优点,也坦率指出栈操作在实际编程中的痛苦,以及 Forth 社区文化中的问题。
编程与软件工程上首页 8 次 · 2010–2024yosefk.com编辑精选