开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 24762|回复: 249
收起左侧

[易语言支持库] 易语言内联汇编器v3.2-更新nasm汇编引擎 伪指令 宏定义

    [复制链接]
发表于 2023-5-2 18:09:54 | 显示全部楼层 |阅读模式   重庆市重庆市
本帖最后由 Yecate 于 2023-5-2 18:09 编辑

简介

易语言内联汇编器(InlineAssembler)是一个易语言扩展支持库, 用于在易语言中嵌入汇编语言指令, 支持x86/x64, 支持NASM宏, 媲美C++内联汇编.


特性

  • 汇编代码补全提示
  • 汇编代码语法高亮
  • 汇编代码鼠标悬停提示指令帮助
  • 支持易语言模块编译
  • 支持汇编代码引用变量/参数/全局变量/常量
    mov eax, 参数
    mov eax, 局部变量
    mov eax, 全局变量
    mov eax, [eax + #常量]
  • 支持汇编代码调用易语言子程序
    call 子程序     ; 调用子程序
    mov eax, 子程序 ; 取子程序地址
  • 支持调用DLL函数
    call user32.dll.MessageBoxA     ; 调用MessageBoxA
    mov eax, user32.dll.MessageBoxA ; 取MessageBoxA地址
  • 支持内联汇编中使用文本字符串 gbk/utf8/unicode
    mov eax, "文本"   ; GBK
    mov eax, u8"文本" ; UTF8
    mov eax, L"文本"  ; UNICODE
  • invoke 调用
    invoke 子程序, 1, 2, 3                                  ; 默认 __stdcall 调用约定
    invoke __stdcall 子程序, 1, 2, 3                        ; __stdcall 调用约定
    invoke __cdecl 子程序, 1, 2, 3                          ; __cdecl 调用约定, 自动清理堆栈
    invoke __fastcall 子程序, 1, 2, 3                       ; __fastcall 调用约定
    invoke __thiscall 子程序, _this, 1, 2, 3                ; __thiscall 调用约定
    invoke user32.dll.MessageBoxA, 0, "内容", "标题", 0     ; DLL 函数
  • 支持 _naked/_cdecl/_removepack 修饰子程序
  • 支持 IDE 断点调试, 支持单步跟踪进入子程序
  • 支持 x86/x64

    bits 32
    mov eax,ecx
    
    bits 64
    mov rax,rcx
  • NASM内核
  • 集成NASMX
    %use nasmx

联系方式

联系作者: QQ:869443499

交流群号: Q群:767562242

有任何想法和意见都可以进群反馈


代码提示


代码提示.gif

转置入代码


转置入代码.gif

快速初始化变量


快速初始化变量.gif

单步跟踪调试


单步跟踪步入.gif

快速插入多行汇编


快速插入多行汇编.gif

快速注释汇编代码

快速注释汇编代码.gif

InlineAssembler 更新历史

v3.2 20230501
    1.修正在易语言循环体内标签定位错位问题(严重问题)
        2.修正部分字符串定位错误问题
        3.增加鼠标悬停显示汇编代码指令提示
          确保 指令帮助文件被正确放置在 易语言根目录InlineAssembler\db\x86.txt(机器翻译过来的,可以自行修改)

        4.增加 reladdr 关键字,仅用于获取标签真实地址( mov eax, reladdr(标签1))
          详见 demo\reladdr.e

        5.增加 %reladdrs 宏, 仅用于存储标签真实地址表( %reladdrs 表名称, 标签1, 标签2,... 标签n)
          详见 demo\switch.e

        6.增加 // 注释
        7.修正易语言子程序参数有通用型(非参考)参数时,导致调试时查看此通用型变量后面的变量数值错误的问题
        8.优化易语言置入代码过长导致的卡顿
        9.增加快速注释/取消注释

        10.右键菜单功能添加快捷键绑定
          Ctrl + Ins      快速插入多行汇编
      Ctrl + Atl + L  变量初始化
          Ctrl + Atl + N  变量初始化(无%define)
          Ctrl + K        屏蔽选中汇编代码
          Ctrl + M        取消屏蔽选中汇编代码

        11.增强汇编代码调试功能,支持单步跟踪进入 跳转/CALL

        12.增加 %append_code 宏; 语法: %append_code xxxx; 支持自定义插入代码到子程序头部/尾部,方便快速插入各种壳保护标记
           详见 demo\插入自定义代码到子程序头尾.e
           插入的代码(字节集) 定义在 易语言目录\InlineAssembler\append_code.json

           头部代码
           push ebp
           mov ebp,esp
           ....
           mov esp,ebp
           pop ebp
           ret
           尾部代码    
v3.1 20230329 测试版
        1.修正代码缩略/展开参数表识别错误问题
        2.修正基础命令重定位失败问题
        3.修正条件宏是否存在类似命令 编译代码错位问题

        4.增强模块和置入代码功能,智能识别变量/参数,无需手动 %define,
          最好变量先初始化(可配合右键菜单 ☆内联汇编:变量初始化(无%define))
          避免调试输出此类命令先于变量初始化,导致编译和调试变量不统一

        5.集成 nasmx(%use nasmx) 如果当前子程序不需要用到高级宏命令,可以不添加 %use nasmx,提高编译速度
          确保 nasmx.inc被正确放置在 易语言根目录\InlineAssembler\nasmx.inc
          详见 demo\nasm-x\nasm-x.e

        6.增加代码提示
        7.增加回车自动加注释分号
v3.0 20230319 测试版
        1.更换底层汇编引擎为NASM
        2.增加宏支持(来自NASM)
          详见demo\宏.e

        3.增加x64汇编支持(来自NASM)
          详见demo\x64.e

        4.修改DLL命令,增加DLL命令前缀设置,nasm宏定义支持 . 号,所有为了避免代码歧义
          假设设置 DLL命令前缀 为 API_,则调用API书写格式为 API_user32.dll.MessageBoxA,留空则为 user32.dll.MessageBoxA
      详见demo\DLL命令前缀设置.e

        5.增加模块编译方式,支持编译模块内联汇编为置入代码
            编译模块之后不需要再配合本支持库使用
            编译模块不能使用变量/调用子程序/不能跨易语言代码JMP/CALL等等
            详见demo\模块\方式二

        6.增加IDE右键菜单
            内联汇编转置入代码(当前子程序)
            内联汇编转置入代码(当前程序集内所有子程序)
            变量顺序初始化
            快速插入多行汇编
                  '内联汇编关键字{
                  '}

        7.移除禁止生成包装函数设置选项,增加_removepack关键字修饰子程序/程序集为禁止生成包装函数
        8.增加函数名称显示高亮(_naked/_cdecl/_removepack)
        9.增加汇编命令大写显示
        10.支持调试模式鼠标悬停寄存器查看寄存器值

        11.增加模块混淆
            模块编译方式二,可以选择开启混淆类成员变量名称,混淆未公开函数名称
                可以自定义混淆方式,参考 InlineAssembler\obfuscate.e
                编译成DLL 放入 易语言主目录\InlineAssembler\obfuscate.dll 即可

        12.修复若干BUG
v2.1 20221004
    1.新增支持调用DLL函数(详情:demo\调用DLL(invoke)\exe.e)
            ' push 0
                ' push L"UNICODE文本标题"
                ' push L"UNICODE文本内容"
                ' push 0
                ' call user32.MessageBoxW

                ' ; 序号
                ' push 8888
                ' call ws2_32.#14

        2.新增invoke(小写)关键字,方便调用函数和DLL函数
                ' invoke user32.MessageBoxW, 0, L"invoke UNICODE文本内容", L"invoke UNICODE文本标题", 0

        3.invoke 调用方式支持 __stdcall/__cdecl/__fastcall 关键字
            ' invoke __cdecl @分配内存, 260 ; __cdecl 根据参数数量自动平衡堆栈
            ' invoke kernel32.GetTickCount  ; 默认 __stdcall 方式

        4.修正部分高亮显示不正常
        5.修正部分常量识别不正确
v2.0 20220816 测试版
    1.新增支持内联汇编字符串 (gbk utf8 unicode)
         ' push "gbk"
         ' push L"unicode"
         ' push u8"utf8"

        2.新增支持内联汇编常量
        3.新增支持naked函数不检查返回值(错误(10022): 子程序“XXX”具有返回值定义,但实际上却没有返回数据或者并不是所有程序分支都返回了数据。)
        4.新增支持汇编代码高亮
        5.修正对易语言5.92版本的支持
        6.修复若干BUG
v1.2 20220710
    1.修正和精易助手支持库不兼容问题(感谢 @不苦小和尚 反馈)
        2.修正子程序代码过长导致出现生成错误代码的问题(感谢 @max 反馈)
        3.新增支持多行汇编
v1.1 20220702
    1.新增支持模块编译
        2.新增增加自定义内联汇编关键字(留空则默认易语言注释文本为内联汇编代码)
        3.新增支持易语言版本 5.80 - 5.93
        4.新增禁止易语言生成函数外包装代码
        5.新增程序集名称开头若为 _naked_/_cdecl_ 则表示此程序集的函数全部为 _naked_/_cdecl_
    6.新增内联汇编中使用易语言基础命令(@分配内存/@重新分配内存/@释放内存/@设置组件属性/@读取组件属性)
        7.修复若干BUG
v1.0 20220620
    第一个版本


InlineAssembler v3.2(20230501).zip (824.83 KB, 下载次数: 866)

点评

要是支持易语言5.95就好了   福建省福州市  发表于 2023-11-24 11:39

评分

参与人数 36好评 +32 精币 +87 收起 理由
fasdfasfa + 1 + 2 感谢分享,很给力!~
空竹 + 1 + 3 新技能已get√
李泽勇2 + 1 + 3 新技能已get√
yujiekuxiao + 2 YYDS~!
难解 + 1 + 5 YYDS~!
梦想ol + 1 + 2 感谢分享,很给力!~
hardchao + 1 + 2 感谢分享,很给力!~
小翁哥哥 + 1 + 2 支持开源~!感谢分享
国王软件 + 1 + 2 支持开源~!感谢分享
汉族 + 1 + 3 感谢分享,很给力!~
网络注册络员 + 1 + 1 支持开源~!感谢分享
camingo + 1 + 2 YYDS~!
xdxf2000 + 1 YYDS~!
回忆菌 + 1 + 2 YYDS~!
ppppzj + 1 + 2 YYDS~!
cbl521ysys + 1 感谢分享,很给力!~
※逍遥游※ + 1 感谢分享,很给力!~
机智蛋 + 1 + 2 YYDS~!
1592363624 + 1 + 2 YYDS~!
Bszk + 1 + 3 新技能已get√
DDSGXQ + 1 + 3 YYDS~!
balini2003 + 1 + 2 YYDS~!
天雷 + 1 + 2 YYDS~!
福仔 + 1 + 5 感谢分享,很给力!~
宁氏 + 1 支持开源~!感谢分享
梦寻简单 + 1 + 3 感谢分享,很给力!~
执骨哟 + 1 + 2 感谢发布原创作品,精易因你更精彩!
神女软件定制 + 1 + 3 哟,这个看起来是个好东西
哔哔芭比波比i + 1 + 2 开源精神必须支持~
quary + 1 + 2 开源精神必须支持~
1185384801 + 1 + 3 感谢分享,很给力!~
网络注册会员 + 1 + 3 YYDS~!
萌萌嗒的小白 + 1 + 5 YYDS~!
凌哥 + 1 + 5 感谢分享,很给力!~
远赴 + 1 + 2 新技能已get√
晓之霖葬 + 1 + 2 YYDS~!

查看全部评分

本帖被以下淘专辑推荐:

签到天数: 21 天

 楼主| 发表于 2023-5-6 10:35:43 | 显示全部楼层   重庆市重庆市
动画 2.gif
回复 支持 反对

使用道具 举报

签到天数: 21 天

 楼主| 发表于 2023-5-22 10:23:14 | 显示全部楼层   重庆市重庆市
新增几个花里胡哨的功能
当前代码行边框
彩虹流程线,彩虹括号,支持高亮当前鼠标所在区域

代码行边框.gif

调试增强显示信息
debug.gif

评分

参与人数 1好评 +1 精币 +2 收起 理由
山川 + 1 + 2 YYDS~!

查看全部评分

回复 支持 3 反对 0

使用道具 举报

结帖率:67% (2/3)

签到天数: 1 天

发表于 4 天前 | 显示全部楼层   河南省驻马店市
支持大佬
回复 支持 反对

使用道具 举报

签到天数: 21 天

 楼主| 发表于 2024-9-10 17:53:00 | 显示全部楼层   重庆市重庆市
祭祀雨人 发表于 2024-9-10 15:23
5.92视觉库下启用3.54和3.55版本,鼠标滚轮向上滚动,会触发IDE崩溃

经5.92 +视觉库 测试正常, 无法复现,你可以加群联系我详细的提供下复现的过程
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 19 天

发表于 2024-9-10 15:23:22 | 显示全部楼层   广东省汕头市
5.92视觉库下启用3.54和3.55版本,鼠标滚轮向上滚动,会触发IDE崩溃
回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 2024-8-26 10:14:55 | 显示全部楼层   广东省中山市
66666666666666666
回复 支持 反对

使用道具 举报

发表于 2024-8-25 08:43:01 高大上手机用户 | 显示全部楼层   河北省廊坊市
谢谢大佬分享666666666
回复 支持 反对

使用道具 举报

结帖率:79% (15/19)

签到天数: 7 天

发表于 2024-8-24 22:49:04 | 显示全部楼层   江苏省苏州市
感谢分享,下载学习
回复 支持 反对

使用道具 举报

结帖率:60% (6/10)

签到天数: 19 天

发表于 2024-8-20 10:01:23 | 显示全部楼层   江西省南昌市
收藏起来,IDE增强,编译速度提升N倍,
回复 支持 反对

使用道具 举报

结帖率:77% (10/13)

签到天数: 20 天

发表于 2024-8-18 14:04:07 | 显示全部楼层   广东省东莞市
谢谢分享
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2024-8-18 11:11:58 高大上手机用户 | 显示全部楼层   江苏省镇江市
谢谢分享
回复 支持 反对

使用道具 举报

签到天数: 19 天

发表于 2024-8-15 11:07:16 | 显示全部楼层   福建省厦门市
感谢分享~~~~~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表