这篇文章讲解的是使用汇编语言找出一组数字的最大值,主要涉及的知识点有data段、循环等。
# 目的:在程序中找出最大的数字
#
# 变量:寄存器的用途定义
# %edi - 保存正在检查的数据项索引
# %ebx - 当前已找到的最大项
# %eax - 当前数据
#
# 使用以下内存位置:
# data_items - 包含数据项
# ...
分类:
系统相关 时间:
2015-05-04 12:03:27
阅读次数:
227
我们使用的平台是Linux系统,具体为CentOS-64位版。下面是第一个汇编程序的源码:
# 目的:退出Linux内核并返回一个简单的状态码
#
# 输入:无
#
# 输出:控制台上没有输出,可以用echo $?来查看状态码
#
# 变量:
# %eax 保存系统调用号
# %ebx 保存返回状态
#
.section .data
.section .text
.gl...
分类:
系统相关 时间:
2015-05-01 09:24:55
阅读次数:
206
看到这里大家都基本知道了如何进行linux下的汇编系统调用;不过有些童鞋可能会问:那些C库中函数里为我们解决的额外汇编代码你是怎么知道的?
好吧,我承认:我是通过逆向知道的,这貌似有点犯规的嫌疑…
比如举个例子,那上一篇里的mmap C库函数来说,首先写一个C代码:#include
#include
#include
#inclu...
分类:
系统相关 时间:
2015-04-12 10:37:45
阅读次数:
226
汇编源程序一般用于系统最基本的初始化:初始化堆栈指针、设置页表、操作ARM的协处理器等。这些初始化工作完成后就可以跳转到C代码main函数中执行。1、GNU汇编语言语句格式任何Linux汇编行都是如下结构:[:][}@commentlinstruction为指令ldirective为伪操作lpseu...
分类:
其他好文 时间:
2015-04-09 00:51:26
阅读次数:
154
===汇编基础====汇编语言程序由定义好的段构成,常用三个段:数据段 初始值的数据元素BSS段 使用零初始化的数据元素文本段 程序代码注明:在BSS段中声明的数据,是不包含在可执行程序中的,但是数据段必然包含在科执行程序中汇编的编写有如下规则:定义段 使用.section伪指令定义)定义入口点 使...
分类:
系统相关 时间:
2015-03-29 01:49:11
阅读次数:
162
李景源原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000一、编写一个main.c文件,保存并退出。二、反汇编C语言程序三、打开后的页面如下:四、去掉所有以点开头后的内容,留下纯汇编代码:g: pushl %ebp movl %esp,%ebp movl..
分类:
其他好文 时间:
2015-03-09 01:50:01
阅读次数:
167
此篇文章出于完成作业的目的,同时也总结一下自己的学习的体会,巩固一下学习成果。是完全真实的作业过程。如需转载请保留以下信息:陈铁+原创作品转载请注明出处+《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000。今天计算机已经成为我们生活中重..
分类:
其他好文 时间:
2015-03-08 01:37:49
阅读次数:
489
在大型项目中,很容易出现版本不匹配的问题,其中导致的虚函数飘移的问题比较难解决。
在这里,用一个例子来说明如何解决这种问题。
建立三个源文件:testso.h,testso.cpp,xuzhina_dump_c6_s3_ex.cpp。
testso.h的代码如下:
1 #ifndef __TESTSO_H__
2 #define __TESTSO_H__
3
4...
分类:
系统相关 时间:
2015-01-19 00:14:28
阅读次数:
380
在上一节已经探究了类的成员变量的排列,现在看一下虚函数表和成员变量的排列及虚函数之间的排列.
先看一个例子:
1 #include
2 class xuzhina_dump_c06_s3
3 {
4 private:
5 int m_a;
6 public:
7 xuzhina_dump_c06_s3(...
分类:
系统相关 时间:
2015-01-14 21:27:26
阅读次数:
273