目录一、Lua语言简介二、Lua架构图三、Lua源码结构很久很久没有写博客了,一直忙于工作和项目,最近依然想静下来阅读一些好的源码。自从读完了Nginx和Memcache的源码后,对服务器端的基础开源软件的实现原理有了一定的认识,接下来想看看Lua这门精巧的语言是如何实现的。一、Lua语言简介Lua是一门用C语言编写的脚本语言,一共1w多行代码,非常的轻巧,适合做web脚本、游戏脚本、物联网等场景
转载 2024-02-21 21:33:12
58阅读
常用的汇编指令:   1、相对跳转指令:b、b1     这两条指令的不同之处在于bl指令除了跳转之外,还将返回地址(bl的下一条指令的地址)保存在lr寄存器中。都是位置无关指令。   2、数据传送指令mov,地址读取伪指令ldr     mov指令可以把一个寄存器的值赋给另一个寄存器,或者把一个常数赋给寄存器,mov指令传送的常数必须能
转载 2024-07-09 13:32:22
56阅读
1、MOV指令        把一个数移动到目标寄存器格式:MOV  条件   s条件: 就表示mov指令是否要执行,如果满足条件就执行movs:  是否影响cpsr的值注:寄存器存储得数据,可以是一个常数,也可以是一个数经过左移右移得到的数据。  &nbsp
    每一种语言都有一些字符串操作函数,反汇编后的代码也不例外。网上讲的都比较零碎,我将它们收集起来,并配上自己的理解,形成本文。 一、字节操作指令:lodsb和stosb1. lodsd需要寄存器esi配合使用。每执行一次lodsb,就将[esi]中的一个字节复制到al寄存器中。    即:lodsd == [es
探索汇编语言的新篇章:ASMREPL asmreplA REPL for x86-64 assembly language项目地址:https://gitcode.com/gh_mirrors/as/asmrepl ASMREPL 是一个为汇编语言爱好者量身打造的交互式命令行工具,让你可以在实时环境中编写、执行和调试汇编指令。无需复杂的设置过程,只需一条简单的命令,即可开启你的汇编旅程。项目技术分
软件:emu8086语言:汇编语言(Assembly)注意:本文列出了十六进制转二进制、十进制、ASCII码及大小写字母转换的代码,全部代码为博主独自一人编写,会有瑕疵,谨慎使用。1.十六进制转换为二进制数设计1.1设计要求:设计转换程序,将键盘键入的四位十六进制数据转换为等值的二进制数,并在终端显示。要求:完善程序结构,设置程序错误出口。输入的不是0-F间的值,显示错误提示信息,并要求重新输入。
在csapp中的新理解: (1)栈向下增长,栈顶元素的地址是所有栈中元素地址中最低的(2)因为栈和程序代码以及其他形式的程序数据都是放在同一内存中,所以程序可以用标准内存寻址方法访问栈内的任意位置(3)加载有效地址(load effective address)指令leap实际上是movq指令的变形,它的指令形式是从内存读数据到寄存器,但实际上它根本就没有引用内存。  &nbs
转载 2024-03-22 20:33:33
68阅读
先上代码: test.S如下 @压栈操作 mov ip, sp sub sp, sp, #12 str lr, [sp] @str r14, [sp] str ip, [sp, #4] @ str r12, [sp, #4] str fp, [sp, #8] @ str r11. [ip, #8] sub fp, ip, #4 @函数调用
W32Dasm是一个强大的反汇编工具,操作简单,使用方便。通常被程序员使用,当然也可被用来Crack软件了,很适合Cracker使用。我在这把与crack相关的功能简述如下: 1.0 开始 2.0 保存反汇编文本文件和创建方案文件 3.0 反汇编文本代码的基本操作 4.0 复制汇编代码文本 5.0 装载32位的汇编代码动态调试 6.0 运行,暂停或终止程序 7.0 单步跟踪程序 8.0 设置激
汇编分类  汇编语言种类大致可以分为:8086汇编(16bit)、x86汇编(32bit)、x64汇编(64bit)以及嵌入式汇编等。根据书写格式的不同可将汇编分为:Intel汇编和AT&T汇编。GCC编译器中默认使用的是AT&T汇编,两种格式的差异如下: 寻址方式的差异如下:寄存器  寄存器是cpu中的数据存储区域,cpu会先将内存中的数据存储到寄存器,再对寄存器中的数据进行运算
               C++反汇编第二讲,不同作用域下的构造和析构的识别目录大纲:  1.全局(静态)对象的识别,(全局静态全局一样的,都是编译期间检查,所以当做全局对象看即可.)    1.1 探究本质,理解构造和析构的生成,以及调用方式(重要,如果不想知道,可以看总结.)  2.对象做函数参数的识别   3.返回值为对象的识别  4.对象为静态局部的识别  5.堆中对象识别    &n
一、前言 为了弄清楚**缓冲区溢出攻击**,先花大篇幅讲清楚main函数的反汇编代码是有必要的(见二、main函数的反汇编代码解析)。 二、main函数的反汇编代码解析 1.main函数的源代码 2.main函数的反汇编代码 (1)前三行 ①lea 0x4(%esp),%ecx解析: 1)实现的功能:esp寄存器中的值(存的是地址,指向的是栈顶)+4,存入寄存器ecx。 程序计数器(pc) : 0
寄存器段寄存器代码段寄存器CS(Code Segment) 存放当前正在运行的程序代码所在段的段基址,表示当前使用的指令代码可以从该段寄存器指定的存储器段中取得,相应的偏移量则由IP提供。 数据段寄存器DS(Data Segment) 指出当前程序使用的数据所存放段的最低地址,即存放数据段的段基址。 堆栈段寄存器SS(Stack Segment) 指出当前堆栈的底部地址,即存放堆栈段的段基址。 附
Why Lua---------------------------------------------一个功能强大,快速,轻量级,可嵌入的脚本语言。程序语法构造简单,用关键数组来实现强大的数据描述功能,同时还提供一些可扩展的语义特征动态类型,无需编译,由解释器先翻译成lua虚拟机的指令, 然后在虚拟机(基于寄存器实现)上运行.使用一个采用增量策略的GC来管理内存1、Fast, 最快的脚本语言,l
原创 2014-08-12 22:16:28
3606阅读
算术运算符加法:Add ax, bx     ;bx+ax => ax   加法运算 带进位加法指令 adc 32位加法Mov  ax , 0fffh 假设第一个数低位Mov  dx, 0 假设第一个数高位 0ffffhMov bx, 1 假设第二个数低位Mov cx, 0 假设第二个数高位Add ax
正确的编译命令gcc -lm -g -o test test.c /usr/local/lib/liblua.a -ldl问题1:缺少/usr/local/lib/liblua.a/data1/www/lua/luacapi/testlua3.c:10: undefined reference to `luaL_newstate' /data1/www/lua/luacapi/testlua3
汇编指令大全 一、数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 汇编指令大全 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP
汇编电话本用汇编写出的电话本项目直接放代码吧亲测成功运行 用汇编写出的电话本项目直接放代码吧.386 .model flat,stdcall option casemap:noneinclude msvcrt.inc includelib msvcrt.lib include user32.inc includelib user32.lib include windows.inc include
MSP430汇编:1、MOV,MOVX,MOVC区别和用法MOV就是移动的意思,C就是Code,代码的意思,X就是eXternal,外部的意思MOVC就是读代码存储器,MOVX就是读写外部存储器,即外部RAM  MOV: 单片机内部的寄存器或者存储器之间相互传递数据(内部RAM);    MOVX: 单片机内部的A累加器与片外的数据存储器...
原创 2021-09-29 11:41:21
477阅读
汇编In,Out IN AL,21H  从21H端口读取一字节数据到ALIN AX,21H  从端口地址21H读取1字节数据到AL,从端口地址22H读取1字节到AHMOV DX,379HIN AL,DX   从端口379H读取1字节到ALOUT 21H,AL  将AL的值写入21H端口OUT 21H,AX  将AX的值写入端口地址21H开始的连续两个字节
转载 2023-06-06 16:59:50
93阅读
  • 1
  • 2
  • 3
  • 4
  • 5