编码
fengjingge
这个作者很懒,什么都没留下…
展开
-
更新和迁移phabricator
如何迁移数据库:1)./phabricator/bin/storage dump | gzip > backup.sql.gz2)gunzip -c backup.sql.gz | mysql -u -p //注意需要迁移前后phabricator的版本保持一致如何保持一致? 进入phabricator/arcanist/libphutil的git仓库,git reset操原创 2016-08-05 17:08:30 · 1763 阅读 · 0 评论 -
兆芯Nano与Intel CPU flag对比表
原创 2014-12-10 13:27:28 · 1580 阅读 · 0 评论 -
Linux桌面操作系统性能分析学习总结
1.什么是计算机性能所谓计算机的性能(Performance)通常是指计算机的速度,它是程序执行时间的倒数。而程序执行时间是指用户向计算机送入一个任务后,直到获得他需要的结果这一段等待时间。包括:1.访问磁盘和访问存储器的时间2.CPU 运算时间3.I/O 动作时间4.操作系统的开销时间等。2.Linux桌面操作系统性能分析意义1.操作系统的性能直接影响了其上应用系原创 2015-01-14 16:46:29 · 2738 阅读 · 0 评论 -
深入理解计算机系统第五章学习-性能优化 3
5.8分支预测现在的处理都支持分支预测功能,在执行分支预测时候,在执行判断语句之前,处理器已经执行了判断后的语言,如果判断正确,就会直接把处理结果给执行单元,否则就会接受分支预测失败惩罚,如果预测比较容易预测,是可以很好提升其性能,如果分支判断确实是随机的话最好不要用这种方法。不过通常的情况下建议多运用分支预测预取技术。GCC在判断是否运用分支预测预取技术的时候,会根据代码的风格判断,以下原创 2014-12-05 20:36:01 · 1058 阅读 · 0 评论 -
深入理解计算机系统第五章学习-性能优化 2
5.5循环展开一种比较常见的优化程序算法,就是将一次循环展开多次,来减少循环的次数。例如combine5:void combine5(vec_ptr v, data_t *dest){long int i;long int length = vec_length(v);long int limit = length - 1;data_t *data = get_ve原创 2014-12-05 20:33:41 · 1134 阅读 · 0 评论 -
深入理解计算机系统第五章学习-性能优化 1
一、简述本文主要是通过学习深入理解计算机系统第五章-性能优化之后的理解和总结。第五章主要目的通过对底层硬件架构和机制(汇编、处理器架构)的理解,让程序员写出更加高效(性能)的代码。二、为什么要进行性能优化对于性能需要不是很急切的地方进行性能优化的意义不是很大,进行性能优化是需要成本的,需要对原始代码进行重构。随着计算机技术不断发展,处理器性能的提高,往往性能可以通过硬件来弥补,但是有些原创 2014-12-05 20:20:45 · 1971 阅读 · 0 评论 -
32位和64位程序兼容性
最近项目需要将之前开发的32位程序迁移到64位操作系统。对于上层应用程序而言没有什么特别的差异。对于底层程序例如嵌套汇编等对寄存器的操作需要考虑这个问题,不同点在于字节对齐,寄存器操作和指令的不同。对齐单位32位和64位是不一样的。 寄存器,32位的有eax、ebx,而64位操作系统是rax、rbx。 指令:32位的pushl、addl、movl,而64位原创 2015-01-08 15:08:22 · 1309 阅读 · 0 评论 -
PowerSaver驱动源码分析技术文档
目 录一、简述 1二、操作环境 2三、主要原理及关键结构体、函数分析 2cpufreq_policy结构体 2cpufreq_frequency_table结构体 4eps_cpu_data结构体 4四、具体函数分析 6eps_cpu_init分析 6eps_cpu_exit分析 7eps_verify分析 7eps_target分析 7eps_s原创 2015-01-06 16:18:09 · 1146 阅读 · 0 评论 -
小组级git服务器的搭建
小组级git服务器的搭建http://blog.chinaunix.net/uid-16979052-id-3491746.html1、公钥的生成任何一个需要使用git服务器的工程师都需要生成一个ssh的公钥。可以通过ssh-keygen来生成~/.ssh$ ssh-keygenGenerating public/private rsa key转载 2014-07-11 17:18:05 · 585 阅读 · 0 评论 -
性能分析工具gprof -linux
(转)性能分析工具gprof: 有一些程序设计工具,它可以告诉你程序执行的效率,整个程序的调用结构,函数调用关系等。这样的工具真的很有用。gprof就是这样的一个效率分 析工具,它能产生一份详细的列表,列出程序执行的一些统计值,其中包括每个函数被调用的频率,被谁调用,所花费时间等。要使用gprof,在用gcc编译 时要加上-pg参数。这个参数会在目的文件中加上gprof所需的信息,也会将转载 2014-06-18 16:02:50 · 734 阅读 · 0 评论 -
PadLock AES内核测试模块(1)
一、简述 主要编写了一个测试验证PadLock AES内核接口的验证模块。应用PadLock AES内核接口实现加密解密。本文提供了应用该模块的方法、步骤、原理及源码。二、操作环境操作系统mint17内核3.8.0编译器gcc4.7.3CPUVIA Nano原创 2014-12-27 15:28:23 · 1540 阅读 · 1 评论 -
Non temporal store调研分析
Nontemporal store调研分析目录:我们为什么要研究Nontemporal指令?我们的目的是什么?Nontemporal指令是什么?Nontemporal指令的作用是什么?Nontemporal指令现在的应用有哪些热度如何?Nontemporal指令怎么用?Nontemporal指令有哪些?Nontemporal指令在gcc中支持情况如何?如何在原创 2016-07-03 09:01:37 · 3370 阅读 · 0 评论 -
自反,反自反
自反: 如果a是A的元素,那么是R的元素反自反: 如果a是A的元素,那么不是R的元素对称:如果是R的元素,那么是R的元素反对称:如果,是R的元素,那么a,b相等传递:如果,是R的元素,那么是R的元素转载 2015-11-03 08:18:00 · 1689 阅读 · 0 评论 -
gcc phi结构体
gcc phi结构体phi是gcc中重要的数据结构类型,它主要用于ssa中的别名处理,本文主要讲述它的作用,相关数据结构体和核心处理函数1.作用 phi主要用于别名处理,对于在ssa阶段中因为分支导致不确定具体是什么数据,采用phi. 2.主要数据结构struct GTY(()) phi_arg_d { /* imm_use MUST be the first element in stru原创 2015-06-30 18:06:11 · 990 阅读 · 0 评论 -
elf文件分析-程序员的自我修养第三章学习
今天学习程序员的自我修养第三章学习对其中的一些内容提取。elf文件Linux操作系统二进制文件统一管理的格式文件,对其分析对于理解编译和链接、集成大型系统,修复bug很有帮助。源程序都会通过编译、链接成可执行文件,可执行文件的elf文件格式是固定,下面看如下图:这个就是C语言代码与elf文件格式的对应。elf文件是通过段来组织的:例如:.test 存放代码原创 2015-02-13 17:37:23 · 895 阅读 · 0 评论 -
编译和链接技术总结
一个程序需要经过预编译、编译、汇编、链接成为可执行文件的过程。预编译过程:工具命令gcc -E hello.c -o hello.icpp hello.c > hello.i过程:1.将宏定义展开,去除#define2.处理预编译命令。3.展开#include文件。4.删除// /**/行5.添加行号和文件名标识。 编译:将C语言编译成汇编语原创 2015-02-13 13:25:06 · 601 阅读 · 0 评论 -
PadLock AES内核测试模块(2)
一、简述 主要编写了一个测试验证PadLock AES内核接口的验证模块。应用PadLock AES内核接口实现加密解密。本文提供了应用该模块的方法、步骤、原理及源码。二、操作环境操作系统mint17内核3.8.0编译器gcc4.7.3CPUVIA Nano原创 2014-12-27 12:30:41 · 1766 阅读 · 0 评论 -
字符型驱动编写技术文档
一、概述 一个字符型驱动的demo程序,主要功能:申请一块内存,把它当作设备,进行读写操作。它涵盖了编写驱动的主要函数和流程,适合入门驱动人员参考。该程序已经验证通过。二、源码有主要3个程序:Makefile用来编译,my_driver.c驱动程序,test.c是测试程序。.├── Makefile├── my_driver.c└── test └─原创 2014-12-30 17:31:39 · 894 阅读 · 0 评论 -
workload分层
之前讲述了workload的分层,对于不同的测试选择workload的方式不同。workload选择的原则:1.不同的层级不同的应用测试层次有: 1.Arithmetic-logic unit 利用Instruction 2.Central processing unit 利用Instruction mix 3.Operating s原创 2015-01-15 15:00:05 · 1063 阅读 · 0 评论 -
shell脚本判断Linux下的CPU类型
#/bin/shcat /proc/cpuinfo > lala#awk '{if ($1 == "vendor_id" && $3 == "GenuineIntel") {print haha="abc"}}' 1eval $(awk '{if ($1 == "vendor_id" && $3 == "CentaurHauls") {print "via_flag1='ok'"}原创 2014-07-22 19:11:38 · 2321 阅读 · 0 评论 -
linux awk命令详解(转)
http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html转载 2014-07-24 16:03:32 · 522 阅读 · 0 评论 -
深入理解计算机系统 家庭作业 2.94
#include typedef unsigned float_bits;typedef unsigned char *byte_pointer;void show_bytes(byte_pointer start,int len){ int i; for(i = 0;i { printf(" %.2x",start[i]);原创 2014-04-28 22:26:48 · 898 阅读 · 0 评论 -
深入理解计算机系统 家庭作业 2.70
判断n位数字能否表示xint fits_bits(int x,int n){ unsigned mask; mask = ((1 return ((unsigned)x }原创 2014-04-24 20:54:02 · 979 阅读 · 2 评论 -
编译deb包过程
编译deb包过程sudo apt-get build-dep language-pack-gnome-zh-hans-base //安装language-pack-gnome-zh-hans-base 的依赖 language-pack-gnome-zh-hans-base需要建立的包dpkg-buildpackage //建立包Cd ..Dpkg -i language原创 2014-05-15 10:54:20 · 2045 阅读 · 0 评论 -
深入理解计算机系统 2.66
int leftmost_one(unsigned x) { x|=x>>1; x|=x>>2; x|=x>>4; x|=x>>8; x|=x>>16; return x^(x>>1); }转载 2014-04-22 21:51:05 · 842 阅读 · 0 评论 -
深入理解计算机系统 2.63(转)
3 int sra(int x,int k) 4 { 5 int xsrl = (unsigned)x >> k; 6 int w = sizeof(int)*8; 7 int mask = ((1 8 int lmb = x&(1 9 lmb&& (xsrl |= mask); 10 return xsrl;转载 2014-04-22 21:08:15 · 1268 阅读 · 0 评论 -
深入理解计算机系统习题答案2.59
int main (){ unsigned int x = 0x89ABCDEF; unsigned int y = 0x76543210; unsigned int m = 0x000000FF; unsigned int n = 0xFFFFFF00; unsigned int q = (x & m)原创 2014-04-21 20:10:22 · 738 阅读 · 0 评论 -
深入理解计算机系统 2.60
//设置unsigned replace_byte (unsigned x,unsigned char b,int i){ char *p=(char *)&x; p[i]=b; return x;}原创 2014-04-21 21:07:35 · 639 阅读 · 0 评论 -
小端大端判断
int is_little_endian()/*2.58 如果在小端法机器上运行返回1,在大端机器上运行返回0*/{int m=1;char *p=(char *)&m; return p[0];}int main (){ int m; m = is_little_endian();原创 2014-04-20 17:17:40 · 463 阅读 · 0 评论 -
查看反汇编代码
objdump -d test //查看反汇编代码,test是链接或者可执行文件。高层次原创 2014-05-07 09:29:42 · 1336 阅读 · 0 评论 -
显示整数、浮点数的二进制字节排列函数
#include typedef unsigned char *byte_pointer;void show_bytes(byte_pointer start,int len){ int i; for (i = 0;i { printf("%.2x", start[i]);原创 2014-04-20 16:20:27 · 565 阅读 · 0 评论 -
有符号整数判断溢出的乘法
不溢出 输出为int tmult_ok(int x, int y ){ int p = x*y; return !x || p/x == y;}原创 2014-04-18 20:48:54 · 3358 阅读 · 1 评论 -
利用awk获取特定字符串所在行的内容
获取特定字符串所在行的内容awk是强大的文档处理工具,是一门经典语言,利用脚本来运行awk的时候,脚本开头需要输入:#!/bin/awk -f,它和命令行输入的不同点是,在脚本里面不用在输入命令awk,和需要待处理的文件名。脚本(it.awk):#!/bin/awk -f# get has the #123 #234 test$1=="#123" {A=NR}原创 2014-02-17 14:59:06 · 10907 阅读 · 0 评论 -
程序员的经验
1.不要为了编程而编程,为了学习而学习,编程是为了方便人们的生活,给社会产生便利性。2.不要忽略博客的重要性,它帮助你梳理思路,促使你想问题,并规范你的编写代码的规范。3.在研发之前要先想到测试,它可以规范你的思路,并保证程序的正确性。4.研发目的是为了满足客户的需求,一切以客户的需求出发,软件的界面是软件的非常重要的一部分,好好设计软件的界面吧!5.程序尽量简单,尽量避免写注释,原创 2014-02-14 16:55:19 · 643 阅读 · 0 评论 -
深入理解计算机系统 家庭作业 2.78
X/2(K) 2的K次方,注意舍入int divide_power2(int x,int k){ return ((x> k );}原创 2014-04-25 13:35:21 · 743 阅读 · 1 评论 -
深入理解计算机系统 2.73
2345678910111213141516171819202122232425262728293031323334#include#includeint saturating_add(int x, int y){ int mask = INT_MIN; int sum = x + y; int w = (sizeof(int)3)-1; int tmin = ( ((x&mask)&转载 2014-04-25 11:08:20 · 1274 阅读 · 0 评论 -
深入理解计算机系统 家庭作业2.75
提取陈int signed_high_prod(unsigned int x,unsigned int y){ unsigned long int z; int w = sizeof(int) z = (unsigned long int)x * (unsigned long int)y; z =z >> w;原创 2014-04-25 12:56:32 · 1676 阅读 · 0 评论 -
深入理解计算机系统 家庭作业 2.93
typedef unsigned float_bits;float_bits float_half(float_bits f){ unsigned sign = f>>31; unsigned exp = f>>23&0xff; unsigned frac = f&0x7fffff; if(exp == 0xff)原创 2014-04-28 13:07:05 · 952 阅读 · 0 评论 -
深入理解计算机系统 家庭作业 2.91
27 typedef unsigned float_bits; 28 float_bits float_absval(float_bits f) 29 { 30 unsigned exp =f >> 23 & 0xff; 31 if(exp == 0xff) 32 return f; 33 r原创 2014-04-27 18:49:03 · 791 阅读 · 0 评论 -
深入理解计算机系统 家庭作业 2.92
float_bits float_negate(float_bits f){ unsigned exp =f >> 23 & 0xff; unsigned sign = f >> 31; if(exp == 0xff) return f; if(sign == 0x000000001)原创 2014-04-27 19:02:37 · 754 阅读 · 0 评论