引言 任何一个CPU都可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或内部产生的一种特殊信息,并且可以立即对所接受的信息进行处理。这种特殊的信息就是中断信息。中断的意思是指,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊信息。中断信息可以来自内部或者外部,本文主要讨论来自CPU内部的中断信息,运行环境是16位8086CPU。 中断向量表 CPU在收到中断信息后,应

c++   c   asm   linux  

本文为作者原创,转载请声明出处。首发于我的博客 引言 在实际编程中,程序的模块化是必不可少的。利用call与ret指令,我们可以用简捷的方法,实现多个相互联系,功能独立的子程序来解决一个复杂的问题。 ret与retf指令 ret指令用栈中的数据,修改IP的内容,从而实现近转移,相当于进行: pop IP retf指令则用栈中的数据,修改CS和IP的内容,从而实现远转移,相当于进行: pop IP

asm   c   c++   linux  

关键字const并不能把变量变成常量。在一个符号前加上const限定符只是表示这个符号不能被赋值。它的值对于这个符号是只读的,但他不能防止通过程序的内部(甚至是外部)的方法来修改这个值。 const int limit = 10; 如果在两边加上指针,就不一样了: const int * limitp = &limit; int i = 27; limitp = &i; printf("%d\n"

c   c++  

开端 1999 年澳门回归,也就是在这年的夏天,我开始了自己的 Linux 探索之路,缘起也是一份偶然,但是此刻回首感叹的是一路走来的坎坷,15 年的岁月苍茫... Slackware 今天IT 圈子里的人估计再找不到不知道开源为何物的人了,无论如何都或多或少听说过一些吧,然而 17 年前的国内,C 语言开发TC 2.0 还是主主流,那个时候 C++98 的标准才刚发布不久啊,“玩开源”的人太少了

git   linux   c++   c  

ijkplayer现在比较流行,因为工作关系,接触了他,现在做个简单的分析记录吧。我这里直接跳过java层代码,进入c层,因为大多数的工作都是通过jni调用到c层来完成的,java层的内容并不是主体功能。 先来看看线索。直接看ijkplayer_jni.c文件,在ijkmedia下。所有的c函数及java函数映射关系都在这里。java上层调用的_prepareAsync方法为native方法,在这

c   java   c++  

前言 这是CSAPP官网上的著名实验,二进制炸弹, 通过gdb和反汇编猜测程序意图,共有6关和一个隐藏关卡, 只有输入正确的字符串才能过关,否则会程序会bomb终止运行, 隐藏关卡需要输入特定字符串方会开启 实验材料可到我的github仓库 https://github.com/Cheukyin/C... 下载 预备 反汇编: objdump -d bomb > bomb_assembly_32.

c++   c   asm   linux   csapp  

前言 这是CSAPP官网上的著名实验,通过注入汇编代码实现堆栈溢出攻击。 实验材料可到我的github仓库 https://github.com/Cheukyin/C... 下载 linux默认开启ASLR,每次加载程序,变量地址都会不一样,所以若要关闭ASLR: sysctl -w kernel.randomize_va_space=0(赋值为2,即可打开ASLR) 不过本实验的程序似乎经过特殊

linux   asm   c++   c   csapp  

xv6是一个支持多处理器的Unix-lik操作系统, 近日阅读源码时发现xv6在记录当前CPU和进程状态时非常tricky 首先,上代码: 1 extern struct cpu cpus[NCPU]; 2 extern int ncpu; 3 4 // Per-CPU variables, holding pointers to the 5 // current cpu and to

源码分析   多进程   多核处理器   操作系统   c  

什么是回调函数 我们先来看看百度百科是如何定义回调函数的: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 这段话比较长,也比较绕口。下面我通过一幅图来说明什么是回调: 假设我们要

linux   c  

DealOperator 用 Vimscript 写的一个函数,自动对二元运算符(+-*/%...)前后添加空格,并对齐等号。 在你的 .vimrc 里面添加 source DealOperator.vim 就可以使用了 :) 特性: 在输入过程中自动处理,无需按额外快捷键; 只对齐同一块代码中的等号(通过缩进来判断)。 BUGS: 目前还不能区分代码与字符串。

python   c   linux   vimscript   vim  
1 2 3 4 5 6 7 8 9