作者ggg12345 (ggg)
站内Programming
标题Re: [心得] 自学组合语言的必备良方!
时间Mon Feb 8 01:14:53 2010
※ 引述《brianhsu (坟墓)》之铭言:
: 有的嘛,遵照古老的传统,一开始就写一个 Hello World 给你,然後再告诉
: 你不要管那些 include 的黑魔法,反正程式可以跑就好--等一下,我学组
: 语就是为了要了解最底层的运作,结果你叫我不要管他?
: ======================================================================
: .section .data
: .section .text
: .global _start
: _start:
: movl $1, %eax # This is the linux kernel system call for exit
: movl $0, %ebx # This is the status number return to OS
: int $0x80 # This wake up the kernel to run exit system call
: ======================================================================
显然, 这组语是在 linux 的 user mode 下跑的, 拿 system call
当 I/O 装置来用.
但如果是 I/O device interface 的 I/O port 与 interrupt 处理
能在组语程式里直接控制吗?
譬如最常举的例: 蜂鸣器小喇巴 与 Timer.
: ======================================================================
: 同样的,这只程式也是利用离开状态做输出--所以你用到的,都是你学过的
: 东西,没有黑魔法,每一行每一行都可以解释到底是在做什麽,让你验证你是
: 不是真的了解他。
: 另外,他用的是 GNU as 的语法,这对我而言有以下几个好处:
: - 这是 Linux Kernel 里面用的东西,我不用再去熟悉其他语法
: - 我只要有一台 Linux Box 就可以试着跑书里的程式
: - 这意谓着你可以用 GCC 把 C 语言编译到组合语言,然後和这本书里面
: 的范例做比对,例如讲到 Function 的时候,你就可以写几个 C 语言
: 的函数来验证书里讲的东西。
: 所以我一定要大推这一本书的啊~~这本书真的是自学组语的必备良方,只要
: 会一点程式设计,一定可以看得懂的好东西!
这个书的范例, 若在Linux user mode 下的实例 能调用 BIOS call 吗?
希望大大们能释疑. 谢谢 !
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.4.12
1F:推 twotwoone:您老人家就已经是大大中的大大了 124.8.132.104 02/08 01:41
2F:→ brianhsu:这本书只专注在 User Mode 而已。 114.32.42.74 02/08 07:41
3F:→ final01:学组语一开始就学IO控制有意义吗?140.118.122.154 02/08 10:05
4F:→ yoco315:他老人家不扯东扯西就不是他老人家了.....203.160.254.105 02/08 18:30