ASM

【转贴】GCC 内联汇编

旧巷老猫 提交于 2020-01-10 04:55:40
1. 简介 1.1 版权许可 Copyright (C) 2003 Sandeep S. 本文档自由共享;你可以重新发布它,并且/或者在遵循自由软件基金会发布的 GNU 通用公共许可证下修改它;也可以是该许可证的版本 2 或者(按照你的需求)更晚的版本。 发布这篇文档是希望它能够帮助别人,但是没有任何担保;甚至不包括可售性和适用于任何特定目的的担保。关于更详细的信息,可以查看 GNU 通用许可证。 1.2 反馈校正 请将反馈和批评一起提交给 Sandeep.S。我将感谢任何一个指出本文档中错误和不准确之处的人;一被告知,我会马上改正它们。 1.3 致谢 我对提供如此棒的特性的 GNU 人们表示真诚的感谢。感谢 Mr.Pramode C E 所做的所有帮助。感谢在 Govt Engineering College 和 Trichur 的朋友们的精神支持和合作,尤其是 Nisha Kurur 和 Sakeeb S 。 感谢在 Gvot Engineering College 和 Trichur 的老师们的合作。 另外,感谢 Phillip , Brennan Underwood 和 colin@nyx.net ;这里的许多东西都厚颜地直接取自他们的工作成果。 2. 概览 在这里,我们将学习 GCC 内联汇编。这里内联表示的是什么呢?

Asm Shader Reference --- Shader Model 1 part

拜拜、爱过 提交于 2020-01-10 03:46:54
ps部分 ps_1_1,ps_1_2,ps_1_3,ps_1_4 总览 Instruction Set 版本 指令槽 1_1 1_2 1_3 1_4 ps 版本号 0 x x x x 常数指令 1_1 1_2 1_3 1_4 def - ps 定义常数 0 x x x x 相位指令 1_1 1_2 1_3 1_4 phase - ps 在相位1与相位2之间转换 0 x 算法指令 1_1 1_2 1_3 1_4 add - ps 两个向量相加 1 x x x x bem - ps 使用一个假的 bump environment-map 变换 2 x cmp - ps 以0为比较赋值 1¹ x x x cnd - ps 以0.5为比较赋值 1 x x x x dp3 - ps 三个分量点积 1 x x x x dp4 - ps 四个分量点积 1¹ x x x lrp - ps 线性插值 1 x x x x mad - ps 每个分量乘完了加 1 x x x x mov - ps 赋值 1 x x x x mul - ps 乘法 1 x x x x nop - ps 无运算 0 x x x x sub - ps 减法 1 x x x x 图片指令 1_1 1_2 1_3 1_4 tex - ps 对图片采样 1 x x x texbem - ps 使用一个假的 bump

管理OralceASM实例

佐手、 提交于 2020-01-09 17:41:35
Administration of Oracle ASM Instances   Oracle ASM is typically installed in an Oracle Grid Infrastructure home separate from the Oracle Database home. Only one Oracle ASM instance is supported on a server in a standard configuration; however, Oracle Flex ASM provides additional configuration options.   When managing an Oracle ASM instance, the administration activity should be performed in the Oracle Grid Infrastructure home. Using Oracle Grid Infrastructure for a Standalone Server 在独立服务器上使用Oracle Grid基础结构 独立服务器的Oracle网格基础结构(Oracle Restart)提高了Oracle数据库的可用性。 在为独立服务器安装Oracle Grid基础结构时

框架升级填坑总结

眉间皱痕 提交于 2020-01-08 18:20:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 因公司业务发展,将jdk1.6升级至1.8,tomcat6升级至8。因老项目使用struts2.3.20版本,使用velocity模板渲染,需针对此框架整体升级至struts2.5.x,spring4.x。 注: struts2.5.x适用jdk1.7及以上。 1、更新项目maven包。struts2-core,struts2-json-plugin,struts2-spring-plugin及其余引用版本。删除原低版本引用,例如 :xwork-core ( 2.5版本 struts内置引用了新版 ),保证只有单一新版,防止冲突。 2、修改web.xml。删掉标红的ng. 。 <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher. ng. filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> 3、修改struts.xml文件头部信息标红部位,修改为新的大版本数值,此处使用2.5.x,因此为2.5 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD

SSDT-hook,IDT-hook原理

我们两清 提交于 2020-01-07 08:16:19
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 【详细过程】 这次主要说说核心层的hook。包括SSDT-hook,IDT-hook,sysenter-hook。欢迎讨论,指正!内核层需要驱动,有这方面的基础最好,如果不会,了解下其中的思路也可以的。 II. SSDT-hook,IDT-hook,sysenter-hook 一.SSDT-hook (一)一般思路: 1.先来了解一下,什么是SSDT SSDT既System Service Dispath Table。在了解他之前,我们先了解一下NT的基本组建。在 Windows NT 下,NT 的 executive(NTOSKRNL.EXE 的一部分)提供了核心系统服务。各种 Win32、OS/2 和 POSIX 的 APIs 都是以 DLL 的形式提供的。这些dll中的 APIs 转过来调用了 NT executive 提供的服务。尽管调用了相同的系统服务,但由于子系统不同,API 函数的函数名也不同。例如,要用Win32 API 打开一个文件,应用程序会调用 CreateFile(),而要用 POSIX API,则应用程序调用 open() 函数。这两种应用程序最终都会调用 NT executive 中的 NtCreateFile() 系统服务。 用户模式(User mode)的所有调用

基于openssl-1.1.1d库的RSA加密解密验证签名(C++版)

ぐ巨炮叔叔 提交于 2020-01-07 00:14:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.下载openssl-1.1.1d库以及相关编译依赖 openssl的1.0.x版本和1.1.x版本有细微的不同,本文方法适用于1.1.x版本 openssl库下载路径: https://www.openssl.org/source/ 下载其中的openssl-1.1.1d.tar.gz perl用于配置编译环境,下载路径: https://www.perl.org/get.html#win32 下载其中的:Strawberry Perl 如果在linux上使用,需要注意1.1.x版本中使用函数:secure_getenv 该函数需要glibc版本2.17以上 可以修改源代码使用getenv,该函数说明: http://www.man7.org/linux/man-pages/man3/getenv.3.html glibc版本下载: http://www.gnu.org/software/libc/ 2.安装好perl,解压好openssl后 其中生成makefile的编译选项有:perl Configure { VC-WIN32 | VC-WIN64A | VC-WIN64I | VC-CE } [no-shared][no-asm][no-tests][--debug] 如果编译32位版本:perl

【JAVA基础☞探针技术】Java探针-Java Agent技术

*爱你&永不变心* 提交于 2020-01-06 14:33:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1、原理:基于javaAgent和Java字节码注入技术的java探针工具技术原理 2、原理分析 动态代理功能实现说明,我们利用javaAgent和ASM字节码技术开发java探针工具,实现原理如下: jdk1.5以后引入了javaAgent技术,javaAgent是运行方法之前的拦截器。我们利用javaAgent和ASM字节码技术,在JVM加载class二进制文件的时候,利用ASM动态的修改加载的class文件,在监控的方法前后添加计时器功能,用于计算监控方法耗时,同时将方法耗时及内部调用情况放入处理器,处理器利用栈先进后出的特点对方法调用先后顺序做处理,当一个请求处理结束后,将耗时方法轨迹和入参map输出到文件中,然后根据map中相应参数或耗时方法轨迹中的关键代码区分出我们要抓取的耗时业务。最后将相应耗时轨迹文件取下来,转化为xml格式并进行解析,通过浏览器将代码分层结构展示出来,方便耗时分析,如图下图所示。 Java探针工具功能点: 1、支持方法执行耗时范围抓取设置,根据耗时范围抓取系统运行时出现在设置耗时范围的代码运行轨迹。 2、支持抓取特定的代码配置,方便对配置的特定方法进行抓取,过滤出关系的代码执行耗时情况。 3、支持APP层入口方法过滤,配置入口运行前的方法进行监控,相当于监控特有的方法耗时

内嵌汇编

[亡魂溺海] 提交于 2020-01-05 09:58:01
参考1、AT&T汇编语言与GCC内嵌汇编简介 2、 Professional.Assembly.Language十三章 ARM GCC 内嵌(inline)汇编手册 内嵌汇编语法如下: __asm__ __volatile__ ( 汇编语句模板: 输出部分: 输入部分: 破坏描述部分 );   汇编语句模板由汇编语句序列组成, 语句之间使用“;”、“\n”或“\n\t”分开 。指令中的操作数可以使用占位符引用C语言变量,操作数占位符最多10个,名称如下:%0,%1…,%9。指令中使用占位符表示的操作数,总被视为long型(4个字节),但对其施加的操作根据指令可以是字或者字节,当把操作数当作字或者字节使用时,默认为低字或者低字节。对字节操作可以显式的指明是低字节还是次字节。方法是在%和序号之间插入一个字母,“b”代表低字节,“h”代表高字节,例如:%h1。 “__asm__” 表示后面的代码为内嵌汇编,“asm”是“__asm__”的别名。 “__volatile__” 表示编译器不要优化代码,后面的指令保留原样,“volatile”是它的别名。括号里面是汇编指令   C语言关键字volatile(注意它是用来修饰变量而不是上面介绍的__volatile__)表明某个变量的值可能在外部被改变,因此对这些变量的存取不能缓存到寄存器,每次使用时需要重新存取。该关键字在多线程环境下经常使用

汇编语言---GCC内联汇编

我怕爱的太早我们不能终老 提交于 2020-01-05 09:57:48
GCC支持在C/C++代码中嵌入汇编代码,这些代码被称作是"GCC Inline ASM"(GCC内联汇编); 一、基本内联汇编 GCC中基本的内联汇编非常易懂, 格式如下 : __asm__ [__volatile__] ("instruction list"); 其中, 1.__asm__ : 它是GCC定义的关键字 asm 的宏定义(#define __asm__ asm),它用来声明一个内联汇编表达式,所以,任何一个内联汇编表达式都以它开头,它是必不可少的;如果要编写符合ANSI C标准的代码(即:与ANSI C兼容),那就要使用__asm__; 2.__volatile__ : 它是GCC关键字 volatile 的宏定义;这个选项是可选的;它向GCC声明"不要动我所写的instruction list,我需要原封不动地保留每一条指令";如果不使用__volatile__,则当你使用了优化选项-O进行优化编译时,GCC将会根据自己的判断来决定是否将这个内联汇编表达式中的指令优化掉;如果要编写符合ANSI C标准的代码(即:与ANSI C兼容),那就要使用__volatile__; 3.instruction list : 它是汇编指令列表;它可以是空列表,比如:__asm__ __volatile__("");或__asm__("");都是合法的内联汇编表达式

【转贴】GCC 内联汇编

坚强是说给别人听的谎言 提交于 2020-01-05 09:56:10
1. 简介 1.1 版权许可 Copyright (C) 2003 Sandeep S. 本文档自由共享;你可以重新发布它,并且/或者在遵循自由软件基金会发布的 GNU 通用公共许可证下修改它;也可以是该许可证的版本 2 或者(按照你的需求)更晚的版本。 发布这篇文档是希望它能够帮助别人,但是没有任何担保;甚至不包括可售性和适用于任何特定目的的担保。关于更详细的信息,可以查看 GNU 通用许可证。 1.2 反馈校正 请将反馈和批评一起提交给 Sandeep.S。我将感谢任何一个指出本文档中错误和不准确之处的人;一被告知,我会马上改正它们。 1.3 致谢 我对提供如此棒的特性的 GNU 人们表示真诚的感谢。感谢 Mr.Pramode C E 所做的所有帮助。感谢在 Govt Engineering College 和 Trichur 的朋友们的精神支持和合作,尤其是 Nisha Kurur 和 Sakeeb S 。 感谢在 Gvot Engineering College 和 Trichur 的老师们的合作。 另外,感谢 Phillip , Brennan Underwood 和 colin@nyx.net ;这里的许多东西都厚颜地直接取自他们的工作成果。 2. 概览 在这里,我们将学习 GCC 内联汇编。这里内联表示的是什么呢?