在 Linux 下使用中断
Linux 是一个运行在保护模式下的共享库的环境, 意味着没有中断服务, Right? 错了. 我注意到在GAS 的例子源码中用了 INT 80, 注释是 "sys_write(ebx, ecx, ed x)". 这个函数是 Linux 系统调用接口的一部分, 意思是 INT 80 必须是到达系统调用服务的门户. 在 Linux 源码中到处看时(忽略从不要使用 INT 80 接口的警告, 因为函数号可能随时改变), 我发现 "系统调用号(system call numbers)" -- 就是说, 传给 INT 80 的 # 对应着一个系统调用子程序 -- 在 UNISTD.H 中. 一共有 189 个, 所以我不会在 这里列出来...但如果你在 Linux 做汇编, 给自己做个好事, 打印出来吧. 当调用 INT 80 时, eax 设为用调用的功能号. 传给系统调用则程序的参数必须按顺序 放在下列寄存器中: ebx, ecx, edx, esi, edi 这样, 第一个参数就在 ebx 里, 第二个在 ecx 里... 注 页码:[1] [2] [3] [4] [5] [6] [7] 第1页、共7页 |