jiayi Rss

汇编移位作除法

| Posted in 汇编 |

0

假设除数是 2 的 N 次方,及 2^(N) ,32位机上 0 < N < 32,如果被除数是负数,移位操作需要 18 个时钟周期;如果被除数是正数,移位操作只需 12 个时钟周期。如果使用 IDIV 指令,则需要多达 43 个时钟周期。下面演示移位的除法运算

Linux发送arp请求与接收arp响应

| Posted in UNP |

0

Linux 中获得本机网卡MAC地址很简单,ioctl()就OK。可如何获得局域网其他主机的MAC地址呢…链路层广播ARP请求然后接收ARP响应。实现介个功能其实已有现成三方库可用,如libnet。不过想加深对协议的理解和Linux网络编程API的理解,jiayi 还是决定用LinuxPF_PACKET自己实现,改啊改,终于成功~以下是大体思路
1. 为数据报分配空间,创建相应的结构体 req,arp 数据报的帧格式如图
        
2. 创建 PF_PACKET 原始套接字,发送套接字为 reqfd,接收套接字为 recvfd
3. 填写链路层通用结构体 reqsa
3. get_ifi()获取本机网络接口数据,填写要发送的ARP数据报 req 结构体,sendto()发送
4. 循环recvfrom()接收ARP响应,滤掉经由本地接口的其他ARP数据报

发送ARP请求能做的事不仅仅获取MAC地址吧…其他“有意义”的事也可以尝试一………

struct 之 地址寻址与地址转换

| Posted in C/C++ |

7

考完最后一科,嘎嘎,终于考完了~这个学期再也不敢懈怠考试了,抓了一段功课,有些效果。。恩,博客恢复更新~
说说C语言的 struct 吧。虽然基本,但有些东西还是挺有意思的。先看看 struct 的地址有哪些有意思的东西吧~

下面有一段代码,其中先给出一个 _student 结构体,声明后付初值。用 struct 的”点(.)”操作符打印其中 name 对象的地址与字符串。然后通过类似 struct 0 地址寻址的方式打,这里给了四句话,其中一句用“毒瘤”注释,说明不可取…最后我们在struct 寻址的基础上截取打印 name 字符串,唔,这里有两句“毒瘤”。 

C code

#include<stdio.h>
int main()
{
    struct _student {
        int sex;
        char*name;
    }

………

Linux 作业控制

| Posted in APUE |

3

话说一个支持作业控制的 Linux 终端下有 作业1,我们把他放到后台,终端执行 kill %1 ,恩,我们知道它把 作业1 杀掉了。但它只杀掉了 作业1 吗?那可不一定……
首先,作业(job) 指的是 进程组(process group),一个作业就是一个进程组。进程组 是什么,A process group is a collection of one or more processes, usually associated with the same job,that can receive signals from the same terminal。明白了两者各自的定义,很容易看到他们是相通的。把进程组抽象成作业,一个主要目的是便于操控。因此作业控制可以看作进程组控制,只不过更简便了,但作业控制有时却不能按照我们的意愿工作。

下面给出一段程序加以说明
第一个程序命名 job_control.c,第二个程序命名 job_control_1.c

CODE

/* job_control.c */
#include<sys/types.h>
#include&l

………

好长时间没更新鸟…

| Posted in 生活八卦 |

2

额…怎么说呢…这段时间事确实多,又到期末,自己的博客没怎么看顾。。。
看到JobruSunjian 还在光顾小博,十分感动~谢谢~
这么长时间没管,博客确实出了小问题,大家的留言都成了乱码,开始还以为大家在开玩笑…因为以前都好好的。。。
唉,再三检查,是数据库的编码出了问题…修正后,恢复了大家留言的“本来面目”,在这道歉…
明天期末开考,寒假恢复更新。查了下PR,竟还是3,今后加把劲是不是可以到4呢,呵呵。毕竟是新年嘛,小憧憬一下下~
新年快乐!大家加油,jiayi 加油~………

Expect 手册中文版

| Posted in shell |

0

Expect 手册 中文版

本文由gunman翻译,在此感谢~

EXPECT(1)
名字:
Expect—–能与交互式程序进行“可程序化”会话的脚本语言
大纲:
        (命令选项概述)
        expect [ -dDinN ] [ -c cmds ] [ -[f|b] ] cmdfile ] [ args ]
概述:
    Expect是一种能够按照脚本内容里面设定的方式与交互式程序进行“会话”的程序。根据脚本内容,Expect可以知道程序会提示或反馈什么内容以及 什么是正确的应答。它是一种可以提供“分支和嵌套结构”来引导程序流程的解释型脚本语言。另外,还可以在随时需要的时候把控制权交给用户,然后再还给脚 本。
    ExpectK是Expect和Tk的混合体。它就按照Expect和Tk的………

有趣的C语言函数指针

| Posted in C/C++ |

19

C语言的函数指针还真是诡异啊,下面四个代码都能正常运行。。C 难得把语法放的这么宽,写下来以示纪念…

C code


#include<stdio.h>

void haha()
{
    printf("haha\n");
}

int main()
{
    void(*func)();
    func = haha;
    func();
}

C code


#include<stdio.h>

void haha()
{
    printf("haha\n");
}

int main()
{
    void(*func)();
    func = haha;
    (*func)();
}

C code


#include<stdio.h>

void haha()
{
    printf("haha\n"

………

新版Linux qq

| Posted in Linux |

10

LinuxQQ终于出新版了,前两天短不了上腾讯看,今天终于等到了。

说说新功能吧~首先是文件传输,解决了大问题。屏幕截图也很出现了,总算有点正宗qq的感觉。

不过,额…用qq木有声音,这个ms解决起来不是很难吧…期待下一版能得到相应解决~

汇编 输出数字

| Posted in 汇编 |

9

汇编确实够傻,平时百用不爽的类似 printf("%dn",i)输出数字竟找不到现成的实现…汇编系统调用默认输出的是其ASCII码…

输出数字,在学习编程语言的时候还是经常用到的,比如比较个大小,排个序…一时间不能输出,郁闷至极,遂写个程序实现 有符号整形 的输出。因为学习汇编不久,像宏的实现,函数的调用当作练手之用都堆了上去,所以程序显得比较臃肿、业余。。。

环境:Linux NASM+ald (因为NASM 支持的intel 汇编和上课学的DOS下汇编语法差不多,为了考试,先用它。AT&T以后再说……),NASM 的具体应用请看其手册:http://www.nasm.us/doc/nasmdoc0.htmlald 看其帮助即可

下面的程序将 val 中的数值输出

CODE

;print_int.asm

SECTION .DATA
        val DD -10H
        len EQU $-val
  &nbsp

………

signal sigaction

| Posted in APUE |

4

As eople say, the old signal() had number of problems:1. The disposition for a signal was automatically reset to its defualt each time the signal occured. So we had to reestablish the handler on catching the signal. 2.There is, however, another subtle problem after reestablish the handler: There is a window of time –after the signal has occured,but before the call to signal in the signal handler. If the same signal occured int the window of time, it would cause the default action to occur and ………