汇编编程简介

公司的几位同事都表示很感兴趣,就挤了点时间整理了这个提纲给大家浮光掠影的介绍了一下。

如今需要用汇编写东西的场合是越来越少了,除了bootloader之类的应用,就是对代码片断进行优化,再有就是反向工程了。而真正要能在现代系统上玩转汇编,需要对CPU架构、计算机结构、操作系统、工具链都有深入的了解,是非常有挑战的。

assembly language overview

讲的时候展示了 RockPlayer 内部的汇编优化情况,顺便也满足了一下大家对于 iCosta 是怎么折腾出来的好奇心,嘿嘿,算是本司福利吧。

遥想当初自己学汇编的时候,世界还多么单纯呀,dos底下起个debug,手边一本8086原理一本中断调用手册就齐活了。现在随便选哪个真实平台,可就复杂多喽。

iPhone 发布 5 周年

不知不觉,iPhone 都发布5年了。2007年1月10日,Steve Jobs 亲自发布,演讲中称当时的智能手机软件系统为 “baby software”,而 iPhone 的软件 “5 years ahead of any other phone” (http://www.youtube.com/watch?v=6uW-E496FXg 8分30秒左右)。

现在5年到了,当初主导市场的 Windows Mobile 和 Symbian 已经穷途末路,而今天的 Android 或者 Windows Phone 跟当初的 iPhone OS 1.0 相比,又如何呢?

Xcode 4.2 编译 Android

Xcode 4.2 已经不带 10.5 sdk 了,试了下把10.6的符号链接到10.5,

ld: warning: ignoring file out/host/darwin-x86/obj/STATIC_LIBRARIES/libSDL_intermediates/libSDL.a, file was built for archive which is not the architecture being linked (i386)
Undefined symbols for architecture i386

qemu就是android emulator,这是个host应用,显然这是非常让人恼火的64/32位兼容问题。android build脚本用的是自己的预编译版本。试了一下bypass之,总是有各种问题,而且拿android source一通乱改也总归也不是个办法。后来一样,这何必呢,直接拿ports做了一个universal版本的libsdl,然后在编译到报错之后,把ports里的(/opt/local/lib/libSDL.a)复制到out/host/darwin-x86/obj/STATIC_LIBRARIES/libSDL_intermediates/里,不就完了嘛。

然后编译成功。