使用文件:
系统调用
打开 5 打开要访问的文件并且创建指向该文件的句柄。
读取 3 使用文件句柄打开文件
写入 4 使用文件句柄写入
关闭 6 关闭文件并且删除文件句柄
打开:
int open(const char* pathname , int flags , mode_t mode);
eax 5
ebx 包含以空字符结尾的文件名字符串的开始位置的内存地址。
ec...
分类:
其他好文 时间:
2015-04-04 09:21:16
阅读次数:
260
高级特性:
SIMD single instruction multiple data
单指令多数据
SIMD扩展 Streaming SIMD Extension (SSE)
流化扩展第二实现 SSE2
第三 SSE3
MMX 对整数执行SIMD操作
64位打包字节,字,双字整数,
MMx 0-7 映射到FPU寄存器R0-7
使用...
分类:
其他好文 时间:
2015-04-04 09:21:12
阅读次数:
243
asm("assembly code");
ansi c将asm用于其它用途,用__asm__替换
在asm后面加上 volatile可以禁止编译器优化
asm volatile ("pusha \n\tpopa");
__asm__ __volatile__ ("pushl $1\n\t");
扩展asm
asm ("asm code" : output locate :...
分类:
编程语言 时间:
2015-04-04 09:18:44
阅读次数:
144
步骤
1定义需要的输入值
2定义对输入值执行的操作
3定义如何生成输出值以及如何把输出值传递给发出调用的程序。
定义输入值
使用寄存器
使用全局变量
使用堆栈
.type func1, @function
func1:
返回主程序
把结果放在一个或者多个寄存器
把结果放在全局变量内存位置。
...
分类:
其他好文 时间:
2015-04-03 19:26:17
阅读次数:
308
.section .data
val:
.quad 3481219651
val1:
.quad 6678934517
output:
.asciz "The res is %qd\n"
.section .text
.globl _start
_start:
movl val, %eax
movl val + 4, %ebx
movl val1, %ecx...
分类:
其他好文 时间:
2014-11-04 22:51:21
阅读次数:
288
.section .data
output:
.ascii "The processor Vendor ID is 'xxxxxxxxxxxx'\n"
.section .text
.globl _start
_start:
movl $0, %eax
cpuid
# 创建一个指针,处理内存中声明的 output 变量时会使用这个...
分类:
编程语言 时间:
2014-10-12 21:54:48
阅读次数:
240
有人说,要深入理解计算机,有两个途径:自底向上和自顶向下。我想,对于自己,更适合从最基本的开始,由底层向高层前进。
所以, 先拿汇编语言下手吧!
说到汇编语言,记得刚开始接触的时候,那是相当的令人难受,所有的指令我都认识,但组在一起就不认识了。直到后来,照着《一个操作系统的实现》做了一个小OS,才真正不晕了。...
分类:
其他好文 时间:
2014-06-24 23:00:54
阅读次数:
256
今天就来用具体实例代码来运用一下昨天所说的只个工具的用法吧
这几个实例主要的目的是来熟悉一下汇编相关工具的用法及应用一下昨天刚说的汇编程序模板。
我们用到的工具主要有as,ld,gcc,gdb,当然,它们是运行在linux系统下的
废话少说,直接来例子了。嗯,再说一句,下面的例子是参考或来自《汇编语言程序设计》Richard Blum的...
分类:
编程语言 时间:
2014-06-24 21:54:14
阅读次数:
421