楼主买了一本《汇编语言程序设计》
英文名《 professional assembly language 》
不懂英文,就买了个汉化版。
开篇第一句,就产生了一点疑问。
不是编译成机器语言么,和汇编有啥关系?
(楼主还有一本《 C HOW TO PROGRAM 》(C 程序设计教程),只看到第 3 章。
想看汇编,是看到有人用汇编做的操作系统只有 1mb 大小,好神奇。c 语言弄的 bsd linux 都好巨大。)
1
zhangchioulin 2019-03-08 15:02:58 +08:00 1
才疏学浅,标题的答案不能回答,但是关于“不是编译成机器语言么,和汇编有啥关系?”可以解答一下。
按照 Objc 来说大体编译步骤如下: $clang -ccc-print-phases main.m 0: input, "main.m", objective-c 1: preprocessor, {0}, objective-c-cpp-output 2: compiler, {1}, ir 3: backend, {2}, assembler 4: assembler, {3}, object 5: linker, {4}, image 6: bind-arch, "x86_64", {5}, image 可以看到第 4 部就是汇编。 具体的楼下补充;] |
2
misaka19000 2019-03-08 15:10:12 +08:00 1
我的理解是作者在这里写的不严谨
至于操作系统内核本身都是非常小的,如果是简陋的内核也可以远小于 1M |
3
coderluan 2019-03-08 15:12:19 +08:00 1
是的,但是找个汇编和你上课学的汇编是不同的,不同平台不同硬件的汇编严格来说都是不一样的。
|
4
tabris17 2019-03-08 15:12:53 +08:00 1
不对。
举个栗子:VBscript |
5
wevsty 2019-03-08 15:15:24 +08:00 1
这话本身显然是有瑕疵的,但也不是完全没道理。
因为汇编语言其实就是机器码(机器语言)的人类可读形式。 |
6
boris1993 2019-03-08 15:16:12 +08:00 via Android 1
个人理解
有虚拟机的,比如 JVM 系的,是源码编译成字节码,然后在编译时或运行时再通过虚拟机执行机器码 没有虚拟机的,比如 C,就是源码编译成目标的机器码 汇编语言不是“机器码的助记符”么 |
7
iceheart 2019-03-08 16:44:36 +08:00 via Android 1
教材过时了
|
8
senghoo 2019-03-08 16:52:52 +08:00 2
这本书写的挺好。就是要注意的是这本用的是 AT&T 格式的。
和国内大部分时候说的汇编不一样。 但是就内容来说是很好的一本书。 |