详解汇编cll ret push pop 并附源码

一.call 实际上做了两次操作

 1.push eip+1,(不能这么写)保存返回地址

 2.jmp 跳转到函数

二.ret 实际上做了两次操作和call

  1.pop eip(不能这么写),取出返回的地址
  2. jmp 跳转到pop取出来的地址

三.push rbp 开辟栈帧 做了两步操作

  1.sub  esp,4

  2.mov  ptr[esp] ebp 

四.pop rbp 释放栈帧

  1.mov  ebp,ptr[esp] 
  2.add  esp,4

五.源码

1.调用函数

       push 10
       push 5
       push re;call 两步1:push rip+1(这个+1是下一步 不是地址偏移) 2jmp
       jmp fun
re:    
       sub esp,4
       mov dword ptr[ebp-12],eax
       invoke printf,ADDR format,dword ptr[ebp-12] ;调用printf函数

2.函数实现

fun:
        push ebp;push 两步 sub eps,4(esp偏移4个字节) mov [esp],ebp(保存当前ebp)
        mov  ebp,esp
        sub  esp,4
        mov  dword ptr[ebp-4],0
        ;mov  dword ptr[ebp - 8], 1
        jmp  s1
        s3:
        add  dword ptr[ebp + 8],1
        s1:
        mov  ecx,dword ptr[ebp +12]
        cmp  dword ptr[ebp +8], ecx
        jge  s2;如果左边大于等于右边跳出循环

        mov  eax,dword ptr[ebp +8]
        mov  ebx, dword ptr[ebp +12]
        imul eax,ebx
        mov  dword ptr[ebp - 4],eax
        ;invoke printf,ADDR format1,dword ptr[ebp - 4] ;调用printf函数
        jmp  s3

        s2:
        mov eax,dword ptr[ebp-4]
        mov  esp,ebp
        mov ebp,dword ptr[esp];pop 就是以下两步
        add esp,4

        ret;ret 两步1:pop rip(这个+1时下一步不是地址偏移) 2jmp

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我无法提供完整的 MATLAB 程序。但是,我可以给你一些关于 FSVM-cll(Feature Selection based on Convex Optimization for Linear Learning)的基本信息和示例代码。 FSVM-cll 是一种基于凸优化的线性学习的特征选择方法。它通过最小化特征权重的 L1 范数来实现特征选择,从而提高分类器的性能和泛化能力。 下面是一个使用 FSVM-cll 进行特征选择的 MATLAB 示例代码: ```matlab % 加载数据集 load('data.mat'); % 将数据集文件命名为 data.mat,包括训练数据 X 和标签 y % 数据预处理 X = normalize(X); % 对特征进行归一化处理 % 设置 FSVM 参数 lambda = 0.1; % 正则化参数 kfold = 5; % 交叉验证折数 % 特征选择 [selected_features, selected_indices] = FSVM_cll(X, y, lambda, kfold); % 输出选择的特征及其索引 disp('Selected features:'); disp(selected_features); disp('Indices of selected features:'); disp(selected_indices); ``` 以上代码假设你已经准备好了数据集,并将其保存为名为 `data.mat` 的文件,其中包括训练数据矩阵 `X` 和标签向量 `y`。你可以根据自己的数据集进行相应的修改。 请注意,示例代码中的 `normalize` 函数用于对特征进行归一化处理,你可以根据需要进行调整或添加其他数据预处理步骤。 希望这可以帮助你开始使用 FSVM-cll 进行特征选择。如果你需要更详细的说明或其他帮助,请提供更多具体问题的细节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值