2013年9月24日

摘要: objcopy [选项]... 输入文件 [输出文件][功能]将目标文件的一部分或者全部内容拷贝到另外一个目标文件中,或者实现目标文件的格式转换。[描述]objcopy工具使用 BFD库读写目标文件,它可以将一个目标文件的内容拷贝到另外一个目标文件当中。objcopy通过它的选项来控制其不同的动作,它可以将目标文件拷贝成 和原来的文件不一样的格式。需要注意的是objcopy能够在两种格式之间拷贝一个完全链接的文件,在两种格式之间拷贝一个可重定位的目标文件可能不会正 常地工作。objcopy在做转换的时候会创建临时文件,然后将这些临时文件删除。objcopy使用BFD来做它所有的转换工作;它访问 阅读全文
posted @ 2013-09-24 21:49 莫扎特也是程序猿 阅读(967) 评论(0) 推荐(0) 编辑
摘要: 这是一段i386的引导代码,无org 1 mov ax, cs 2 mov ds, ax 3 mov es, ax 4 mov ax, 0b800h 5 mov gs, ax 6 mov al, 65 7 8 call DispStr ; 调用显示字符串例程 9 jmp $ ; 无限循环10 DispStr:11 mov ax, BootMessage12 mov bp, ax ; ES:BP = 串地址13 mov cx, 16 ... 阅读全文
posted @ 2013-09-24 13:04 莫扎特也是程序猿 阅读(1843) 评论(0) 推荐(0) 编辑
摘要: 在orange's 一个操作系统的实现,第3章,pmtest1.asm中,有如下代码 GdtPtr dwGdtLen - 1 ; GDT界限我们知道一个描述符中包含段基址和段界限,那么如果GdtLen是GDT的长度,为什么段界限要-1呢?因为段界限表达的是段内的最大偏移,而不是段的最大长度。一个简单的例子,加入一个段有如下内存:var1db 0x01;偏移0var2 db 0x02;偏移1那么段界限应该是1还是2呢?答案是1,最大偏移是1。访问段中数据使用:段基址 +偏移(所以段界限说明的是这个最大偏移)总之,牢记一点,段界限不是指段的最大长度,而是只段内的最大偏移,所以一定要在段长度 阅读全文
posted @ 2013-09-24 11:41 莫扎特也是程序猿 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 附录A: Ndisasm------------------- 反汇编器, NDISASM A.1 简介反汇编器是汇编器NASM的一个很小的附属品.我们已经拥有一个具有完整的指令表的x86汇编器,如果不把这个指令表尽最大可能地利用起来,似乎很可惜,所以我们又加了一个反汇编器,它共享NASM的指令表(并附加上一些代码)反汇编器仅仅产生二进制源文件的反汇编.NDISASM不理解任何目标文件格式,就象'objdump',也不理解'DOS .EXE'文件,就象'debug',它仅仅反汇编. A.2 开始: 安装. 参阅1.3的安装指令.NDISASM就象 阅读全文
posted @ 2013-09-24 11:35 莫扎特也是程序猿 阅读(2355) 评论(0) 推荐(1) 编辑
摘要: 在金典(GoldenDict)中添加在线辞典:科林斯 , 海词,有道,金山词霸,英业达,google,汉典http://www.collinslanguage.com/results.aspx?context=3&reversed=False&action=define&homonym=-1&text=%GDWORD%http://dict.cn/%GDWORD%http://dict.youdao.com/search?q=%GDWORD%&ue=utf8http://www.iciba.com/%GDWORD%/http://www.dreye.co 阅读全文
posted @ 2013-09-24 10:34 莫扎特也是程序猿 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 本文解 释两种最流行的 Linux? 汇编器 —— GNU Assembler(GAS)和 Netwide Assembler(NASM) —— 之间一些比较重要的语法差异和语义差异,包括基本语法、变量和内存访问、宏处理、函数和外部例程、堆栈处理以及重复执行代码块的技术方面的差异。与其他语言不同,汇编语言要求开发人员了解编程所用机器的处理器体系结构。汇编程序不可移植,维护和理解常常比较麻烦,通常包含大量代码行。但是,在机器上执行的运行时二进制代码在速度和大小方面有优势。对于在 Linux 上进行汇编级编程已经有许多参考资料,本文主要讲解语法之间的差异,帮助您更轻松地在汇编形式之间进行转换。本文 阅读全文
posted @ 2013-09-24 09:28 莫扎特也是程序猿 阅读(1822) 评论(0) 推荐(0) 编辑
摘要: SECTION是一种组织代码和存储的方式NASM支持标准的.data, .text和.bss,编译后的程序文件中的内存地址顺序是.text, .data,用户自定义section。NASM支持用户自定义section同名的section,编译后会放在同一块连续的内存上[SECTION .data]var1 db 0x01[SECTION .text]MOV AX, var1[SECTION .data]var2 db 0x02编译后,内存为0xB8040000 0102,其中0xB804是MOV AX,0x04的机器码,0x04是标号var1汇编后的偏移地址。因为汇编后,var1对应的存储区在 阅读全文
posted @ 2013-09-24 09:02 莫扎特也是程序猿 阅读(1260) 评论(0) 推荐(0) 编辑

导航