Asm&C
OldJohn86
虚其心,可解天下之问;专其心,可治天下之学;静其心,可悟天下之理;恒其心,可成天下之业
Python 学习推荐:
https://tushare.pro/register?reg=252370 分享此链接
展开
-
pthread_create如何传递多个参数
pthread_create如何传递多个参数http://zhidao.baidu.com/question/315398992.html涉及多参数传递给线程的,都需要使用结构体将参数封装后,将结构体指针传给线程定义一个结构体struct mypara{ var para1;//参数1 var para2;//参数2}转载 2015-03-25 18:58:50 · 356 阅读 · 0 评论 -
Linux编程错误处理函数
1. perror函数原型如下:void perror(const char *s);perror函数是标准的错误输出函数,如果参数s不为空,首先打印输出字符串s,然后紧跟着输出由全局整型变量errno所对应的错误信息。其中errno变量定义在errno.h中。例如:[cpp] view plaincopy#include int main(void转载 2015-04-23 17:31:21 · 476 阅读 · 0 评论 -
typedef 为数组和函数指针定义别名
为数组定义简洁的类型名称。例如,定义三个长度为5的整型数组,int a[10],b[10],c[10],d[10];在C语言中,可以将长度为10的整型数组看作为一个新的数据类型,再利用typedef为其重定义一个新的名称,可以更加简洁形式定义此种类型的变量,具体的处理方式如下:typedef int INT_ARRAY_10[10];typedef int INT_ARRAY_20原创 2015-07-01 10:48:39 · 923 阅读 · 0 评论 -
C语言union(联合体 共用体)
一直以来,union都是个很少用到的东西,对于这些不常用的结构往往记不住。这次看书又看到了,还是学习一下吧。一般在Windows API的一些数据结构中才能看到这个union,其实并不复杂。本质上来说和结构体是一样的,但是从包装的角度来看有差异。1、union中可以定义多个成员,union的大小由最大的成员的大小决定。 2、union成员共享同一块大小的内存,一次只能使用其中的一个成员原创 2015-06-30 17:57:19 · 354 阅读 · 0 评论 -
使用typedef语句定义数组类型
使用typedef语句定义数组类型 1. 一维数组类型的定义格式 typedef []; 例如: (1) typedef int vector[10]; (2) typedef char strings[80]; (3) typedef short int array[N]; 第一条语句定义了一个元素类型为int,含原创 2015-07-01 10:47:33 · 382 阅读 · 0 评论 -
函数指针与回调函数
你不会每天都使用函数指针,但是,它们确有用武之地,两个最常见的用途是把函数指针作为参数传递给另一个函数以及用于转换表(jump table)。 【警告】简单声明一个函数指针并不意味着它马上就可以使用。和其它指针一样,对函数指针执行间接访问之前必须把它初始化为指向某个函数。下面的代码段说明了一种初始化函数指针的方法。 int f(int); in转载 2015-07-07 10:40:25 · 353 阅读 · 0 评论 -
关于linux内核中的"__attribute__ ((packed))"
__attrubte__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。#define __u8 unsigned char#define __u16 unsigned shortstruct str_struct{ __u8 a; __u8 b;转载 2015-08-28 13:50:38 · 992 阅读 · 0 评论 -
64bit需要做的改变
64bit需要做的改变最近64bit以更低的代价开放到了广大的用户面前,对于需要更大的内存空间,或者更精确的浮点数计算的开发者来说,无疑提供了更多的方便。这篇文章的目的是要读者了解对于32bit的源代码向64bit转移所要做的工作。事实上来说,32bit的代码可以很方便的移植到64位机上,因为64位提供了对32位很好的支持,只有在你有以下的需要的时候,尝试去转载 2015-08-05 15:14:49 · 499 阅读 · 0 评论 -
什么是汇编语言(一) 汇编底层原理,指令字节码
作者:zenglong添加时间:2013/8/30 19:12:30 浏览次数:979标签:汇编语言,汇编语言教程,汇编底层原理,指令字节码学习汇编语言首先要理解什么是汇编语言,不像其他的编程语言,不同的汇编程序有不同的语法格式,许多刚接触汇编的程序员就陷入了这种困境,不知道该学哪种好。所以,学习汇编的第一步就是选择一种适合你的开发环境的汇编语言类型,一旦你确定下来了,转载 2015-10-19 17:52:00 · 3156 阅读 · 0 评论 -
ARM 汇编指令集
0. ARM寄存器 R13: SP R14: LR1. 跳转指令 跳转指令用于实现程序流程的跳转,在ARM 程序中有两种方法可以实现程序流程的跳转: 1) 使用专门的跳转指令。 2) 直接向程序计数器PC 写入跳转地址值。 通过向程序计数器PC 写入跳转地址值,可以实现在4GB 的地址空间中的任意跳转,在跳转之前结合使用转载 2015-10-19 16:03:54 · 445 阅读 · 0 评论 -
GNU ARM 汇编伪指令(Assembler Directives)
1. GNU ARM 汇编简介 任何汇编行都是如下结构:[:] [} @ comment[:] [} @ 注释 GNU ARM 汇编中,任何以冒号结尾的都被认为是一个标签,而不一定非要在一行的开始。下面是一个简单的例子,这段汇编程序定义了一个"add"的函数,该函数返回两个参数的和:[cpp] view plaincopy.sec转载 2015-10-19 16:05:03 · 608 阅读 · 0 评论 -
什么是汇编语言(二) 高级语言与汇编
作者:zenglong添加时间:2013/8/31 22:41:34 浏览次数:620标签:汇编语言,汇编语言教程,高级语言,汇编前面介绍了和汇编相关的指令字节码部分,这节继续翻译汇编教程英文原著中第一章的后续部分。High-Level Languages(高级编程语言) 如果直接使用纯粹的处理器指令集进行编程确实很困难(尽管看起来好像很cool),即便是最简单的程序都转载 2015-10-19 17:55:07 · 2438 阅读 · 0 评论 -
Linux汇编与C互相调用
一. 概述 汇编通过call指令调用C函数,call指令主要有两个功能:1.将下一条指令的地址保存在栈顶;2.设置eip指向被调用程序代码的开始处。汇编使用ret指令返回,ret的功能是把返回地址从桟里弹出,并转到该地址去执行。 汇编程序调用C函数时,函数的入口参数使用堆栈来传送。 C函数调用时,输入参数采用堆栈方式传递,参数的传递顺序是从转载 2015-10-19 18:44:36 · 664 阅读 · 1 评论 -
ARM CPSR+SPSR
1. 简介 CPSR(当前程序状态寄存器)在任何处理器模式下被访问。它包含了【条件标志位】、【中断禁止位】、【当前处理器模式标志】以及其他的一些控制和状态位。每一种处理器模式下都有一个专用的物理状态寄存器,称为SPSR (备份程序状态寄存器)。 当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。由于用户模式转载 2015-10-19 16:07:04 · 550 阅读 · 0 评论 -
C/C++与汇编混合编程简介
1. 简介 当需要C/C++与汇编混合编程时,可以有以下两种处理策略:若汇编代码较短,则可在C/C++源文件中直接内嵌汇编语言实现混合编程。若汇编代码较长,可以单独写成汇编文件,最后以汇编文件的形式加入项目中,通过ATPCS规定与C程序相互调用及访问。2. 内嵌汇编语言指令 用C/C++程序嵌入汇编程序中可以实现一些高级语言没有的功能,提高程序执行效率。arm转载 2015-10-19 15:59:14 · 427 阅读 · 0 评论 -
ARM汇编编程规则
1. 基本概念 • ATPCS (ARM-Thumb Procedure Call Standard) 规定了一些子程序间调用的基本规则,这些规则包括子程序调用过程中寄存器的使用规则,数据栈的使用规则,参数的传递规则。有了这些规则之后,单独编译的C语言程序就可以和汇编程序相互调用。 使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS类型。而对于汇编语言来转载 2015-10-19 16:00:55 · 375 阅读 · 0 评论 -
linux如何读写物理内存
一、基础知识: 1. 设备文件: mem是一个字符设备文件,是计算机主存的一个影象。通常只有root用户对其有读写权限。因此只有root用户能进行这些操作。 如果要打开设备文件/dev/mem,需要系统调用open()函数,作用是打开一个文件或设备,其函数原型 为: #include #include int open(const char *path,原创 2015-10-13 18:51:37 · 929 阅读 · 0 评论 -
socket()普通用户, Operation not permitted
我想做一个ping程序,其中socket的前两个参数是AP_INET,SOCK_RAW 第三个参数应该是什么啊。一个例子中写的是IPPROTO_ICMP,这是什么东西啊,对吗? int get_raw_socket() { int sd; int flag; if((sd=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP){ pe原创 2015-04-23 17:31:17 · 17679 阅读 · 2 评论 -
macPing实现Codes
/****************************************************************************//* XXXX API *//* Copyright 2015-20原创 2015-03-27 12:43:57 · 465 阅读 · 2 评论 -
atoi() 与 itoa()函数的内部实现
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转 换为字符串的一个例子: atoi 把字符串转换成整型数 itoa 把一整数转换为字符串 [cpp] view plaincopy#include "stdio.h" #转载 2015-03-03 15:46:34 · 304 阅读 · 0 评论 -
以原始套接字的方式截获流经本机网卡的IP数据包
从事网络安全的技术人员和相当一部分准黑客(指那些使用现成的黑客软件进行攻击而不是根据需要去自己编写代码的人)都一定不会对网络嗅探器(sniffer)感到陌生,网络嗅探器无论是在网络安全还是在黑客攻击方面均扮演了很重要的角色。通过使用网络嗅探器可以把网卡设置于混杂模式,并可实现对网络上传输的数据包的捕获与分析。此分析结果可供网络安全分析之用,但如为黑客所利用也可以为其发动进一步的攻击提供有价值的信息转载 2015-03-19 13:31:13 · 5510 阅读 · 1 评论 -
Linux网络编程:原始套接字的魔力【上】
基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有IP头。换句话说,我们对它们头部操作的空间非常受限,只能使用它们已经开放给我们的诸如源、目的I转载 2015-03-18 14:28:57 · 472 阅读 · 0 评论 -
DM9000 Device Driver(2) -- Dm9000.h
/* * dm9000 Ethernet */#ifndef _DM9000X_H_#define _DM9000X_H_#define DM9000_ID 0x90000A46/* although the registers are 16 bit, they are 32-bit aligned. */#define DM9000原创 2015-03-17 09:44:45 · 644 阅读 · 0 评论 -
学C语言的十个理由
Every programmer should learn C during their programming career. Its benefits are to numerous to ignore. Not only will it open many more job opportunities, but it will teach you more about computers转载 2015-03-17 09:36:10 · 456 阅读 · 0 评论 -
Driver for Atmel AT91 / AT32 Serial ports
/* * linux/drivers/char/atmel_serial.c * * Driver for Atmel AT91 / AT32 Serial ports * Copyright (C) 2003 Rick Bronson * * Based on drivers/char/serial_sa1100.c, by Deep Blue Solutions Ltd.原创 2015-03-17 13:54:08 · 810 阅读 · 0 评论 -
C语言实现的linux下ls命令
用C语言实现linux下的ls -l命令。与文件相关的结构体、函数等等知识请看"stat结构体以及文件相关函数"[cpp] view plaincopy#include #include #include #include #include #include转载 2015-03-30 10:43:34 · 2178 阅读 · 0 评论 -
详解 Too many open files
运行在Linux系统上的Java程序可能会出现"Too many open files"的异常情况,且常见于高并发访问文件系统,多线程网络连接等场景。 程序经常访问的文件、socket在Linux中都是文件file,系统需要记录每个当前访问file的name、location、access authority等相关信息,这样的一个实体被称为file entry。“o转载 2015-03-30 10:57:39 · 343 阅读 · 0 评论 -
pthread线程的终止退出 | 线程的大量创建
今天测试自己写的多线程的程序,按实际情况说,应该创建3000多个线程才对,但是,创建到378个的时候,就出错来,pthread_create()失败,刚开始以为这是个例外,所以,又重新启动,甚至跑到另一台电脑上测试。 ps:请原谅我的无知,谢谢。。。。 后来,问题根本不再这里,我从网上搜索资料,原来是有限制的,所以,从中找到一篇比较好的博文,特意转在这里,转载 2015-03-30 15:28:08 · 583 阅读 · 0 评论 -
使用Linux 原始套接字抓取数据链路层上IEC61850-9-2(LE) SV数据包并显示的参考程序
目标:在linux下使用C语言的原始套接字来接收以太网数据链路层上的数据,如果接收的数据是IEC61850-9-2 SV类型,则打印。。。。仅供参考!源代码:[cpp] view plaincopy#include #include #include #include #include #inclu转载 2015-03-23 14:26:57 · 1494 阅读 · 0 评论 -
现在我给你两种选择,一学编程,二不学编程
该睡了,来这里看看,让我来告诉你吧,现在我给你两种选择,一学编程,二不学编程。 你现在可能有两种思想: 一:听说学编程比较牛,工资高,所以兴致突来,所以才发这篇帖子求救的,希望我猜的正确。二:假如我想错了,那就是你热心专注于编程,那我来给你说吧,我刚开始跟你一样,也是热衷于编程。 给你说一下我的经历吧!大一时,发奋学习,虽然我是学网络的,可还是从图书馆里借很多编程方面的书来看,仿佛原创 2015-03-23 13:06:46 · 791 阅读 · 0 评论 -
Linux下使用RAW SOCKET原始套接字构造UDP原始数据帧广播到局域网,在局域网的另一台计算机上显示UDP发送的信息
因为使用IEC61850需要直接访问以太网数据链路层,因此需要做一些访问数据链路层的准备工作。计划使用Linux C构造UDP原始帧在局域网内广播消息,并在另一台电脑上使用QT程序接收和显示这个广播消息。网上关于使用RAW SOCKET构造原始帧的资料很少,在外国的一个网站上找到了一份源码,经过改造后可以再局域网内广播UDP了。 在此之前遇到了很多问题,在此总结:(1)使用wiresh转载 2015-03-23 16:16:40 · 1525 阅读 · 0 评论 -
原始套接字接收是多了4个字节,是怎么回事?
rt 两个一样的开发板,一个发送,一个接收,不管哪边发哪边接,接收方都会多四个字节,正好多在二层数据帧协议出,不知道如何解决,以下是源代码://send.c#include #include //perror#include //strcpy,memset#include //socket#include转载 2015-03-23 14:40:07 · 746 阅读 · 0 评论 -
读取linux下的网络设备的mac地址与发送原始数据包
[html] view plaincopyroot@dlrc-desktop:/home/dlrc/dlsp-ep9302/work/mystar-v0.4# cat /proc/net/dev Inter-| Receive | Transmit face |bytes packets errs drop fifo frame com转载 2015-03-23 18:19:36 · 3406 阅读 · 0 评论 -
Linux 网络编程之原始套接字
1. 介绍前面主要介绍了流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),基本上能够满足TCP与UDP的应用。但一些问题,我们仍然无法解决,如:(1)发送一个自定义的IP包(2)发送ICMP包(3)侦听网络上的数据包(4)伪装IP地址(5)实现自定义原创 2015-03-18 13:54:54 · 418 阅读 · 0 评论 -
原始套接字收发MAC数据包完整历程--发送Codes & 接收Codes
//send.c#include #include //perror#include //strcpy,memset#include //socket#include //ioctl#include //ifreq#include //sockaddr_sll#include原创 2015-03-24 17:42:24 · 1140 阅读 · 0 评论 -
Linux/CentOS 升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题)
标签: GLIBCcentoslinux基础运行库2014-09-24 10:32 23013人阅读 评论(21)收藏举报分类: 开发环境(8) Linux(3) 版权声明:本文为博主原创文章,未经博主允许不得转载。在你准备升级GLIBC库之前,你要好好思考一下,你真的要升级GLIBC么?你知道你自己在做什么么?转载 2016-08-03 15:57:02 · 878 阅读 · 0 评论