首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在c++(VS2010)中使用__asm将short类型的变量移动到EAX中

在c++(VS2010)中使用__asm将short类型的变量移动到EAX中
EN

Stack Overflow用户
提问于 2012-04-09 13:40:32
回答 2查看 561关注 0票数 1

在c++ (Visual Studio2010)中使用asm插入时,当我试图将类型为short的16位变量移到32位EAX寄存器中时,我得到了一个“类型不兼容”的错误。但是,如果我使用16位AX寄存器,则一切正常。这个错误背后的逻辑是什么?谢谢!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>

int main()
{
   short sVar;

   std::cout << "sVar=";
   std::cin >> sVar;

   __asm
   {
      MOV AX, sVar;
      SHL AX, 1;
      MOV sVar, AX;
   }
   std::cout << sVar << "\n";

   return 0;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-09 13:44:21

逻辑很简单- eax是32位的,而short是16位的,所以你不能复制一个到另一个,因为它们的大小不同。ax是16位的,所以short可以复制到那里没有问题。然后,您可以使用movzxmovsx将16位值扩展为带有零或符号扩展名的32位。

票数 5
EN

Stack Overflow用户

发布于 2012-04-09 20:18:45

EAX是32位,sVar (短)是16位。在这种情况下,您需要查看MOVSX (带符号扩展移动)或MOVZX (带零扩展移动)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10074082

复制
相关文章
Leptonica在VS2010中的编译及简单使用举例
在tesseract-ocr中会用到leptonica库。这里对leptonica简介下。
全栈程序员站长
2022/07/10
1K0
C++中fstream_在使用中
C++中处理文件类似于处理标准输入和标准输出。类ifstream、ofstream和fstream分别从类 istream、ostream和iostream派生而来。作为派生的类,它们继承了插入和提取运算符(以及其他成员函数),还有与文件一起使用的成员和构造函数。可将文件<fstream> 包括进来以使用任何fstream。如果只执行输入,使用ifstream类;如果只执行输出,使用 ofstream类;如果要对流执行输入和输出,使用fstream类。可以将文件名称用作构造函数参数。
全栈程序员站长
2022/10/02
5.6K0
C++中fstream_在使用中
看ASM在代码中的强势插入
前言 我之前写过一篇AOP的文章 看AspectJ在Android中的强势插入 是通过AspectJ来实现的,本篇是『巴掌』的投稿,他通过使用ASM来讲解了在Java和Android中的AOP方法,非常值得大家学习交流~ demo地址:https://github.com/JeasonWong/CostTime 需求 实际业务开发中有很多需要不改变原业务代码,而需额外增加一些包括各种统计的需求,如APM、无数据埋点等,也就是耳熟能详的AOP,本文以统计方法耗时为例,不使用Aspectj,采
用户1907613
2018/07/20
5K0
vs2010 c++中内嵌汇编代码
在研究汇编时,需要自己写点汇编代码测试,用Ollydbg写每次加载程序就没了,不是很方便。
墨文
2020/02/28
1K0
PHP中变量类型的判断
gettype 会根据 参数类型返回下列值  “boolean”(从 PHP 4 起)  “integer”  “double”(如果是 float 则返回“double”,而不是“float”)  “string”  “array”  “object”  “resource”(从 PHP 4 起)  “NULL”(从 PHP 4 起)  “unknown type”  例如:  gettype('1');返回的是string  而gettype(1);返回的是integer 
红目香薰
2022/11/29
4.5K0
【C++】C++中的类型转化
说起类型转化,我们在C语言之前的学习中可以了解到,类型转换可以分为两种情况:隐式类型转化;显示类型转化。但是为什么在c++中还要继续对类型转化做文章呢?我们一起来看:
The sky
2023/04/30
1.1K0
【C++】C++中的类型转化
C++中的POD类型
几乎所有的系统底层都是用C写的,当时定义的基本数据类型比如int、char、float、枚举、指针、数组和结构等通过二进制拷贝后还能保持数据不变,即编译器可以通过二进制数据将该类型正确解析出来。C++中的类类型引入了继承和派生等新概念,编译器无法解析这些复杂数据结构,因此C++提出POD数据结构的概念用于兼容C语言,由于C++中基本内置类型都是POD类型,因此我们一般讨论class、struct和union是否是POD类型的。
TOMOCAT
2021/04/16
3.1K0
C++中的类型转换
C++的类型转换 零、前言 一、C语言的类型转换 二、C++强制类型转换 1、static_cast 2、reinterpret_cast 3、const_cast 4、dynamic_cast 5、explicit 三、常见面试题 零、前言 本章主要学习C++的四种类型转换 一、C语言的类型转换 概念及介绍: 在C语言中,如赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化 C语言中的两种形式的类型转换: 隐式类型转化:编译器在编
用户9645905
2022/11/15
1.9K0
C++ 变量类型
变量其实只不过是程序可操作的存储区的名称。C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。
爱学iOS的小麦子
2023/05/24
2720
C++ 变量类型
变量其实只不过是程序可操作的存储区的名称。C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。
iOS程序应用
2023/05/19
3230
JS中的变量和类型计算
值类型(boolean,string,number,null,undefined)
ConardLi
2019/09/08
4.2K0
java中 关于short a +=1; 与short a=a+1 的问题
+= 左右两边类型不同是会自动强制转换 ++ 则不会自动强制转换 short a =0;int b = 1;a +=b; // 少用这个a = a+b;//会出错的 a = (short)( a + b); short a = a+1;要改成short a = (short)( a + 1);//1是int类型你写的那3个没什么大的区别但要注意这个 a = a++;a的值是不会改变的; for(int i =1;i<10;i++){ a=a++; System.out.println(a); } System.out.println(a);
用户9131103
2023/07/17
1680
Sql 中的变量使用
我们在学 Python 或者其他编程语言的时候都应该有学过变量这么一个东西,可是 Sql 这种查询语言中怎么也有变量呢?具体有什么用呢?
张俊红
2019/08/28
11.5K1
VS2010中使用CLR单元测试框架进行C++测试
上篇博文中使用VS2013提供的C++本地测试框架进行测试,在VS2010中没有提供这样的功能,但是我们可以使用.NET单元测试框架。
卡尔曼和玻尔兹曼谁曼
2019/01/25
1.2K0
C++中的数组类型操作
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
鲸落c
2022/11/28
1.5K0
JSTL 和 JSP 中变量互相访问1)<%%>变量在jstl中获取的例子:2)jstl变量在<%%>中获取的例子:
1)<%%>变量在jstl中获取的例子: <% String username="zhangsan"; pageContext.setAttribute("username",username); %> <c:out value="${username}"/> 即:jsp 页面中<%%>中的变量在定义后,需要放置到pageContext属性中,才能被获取(当然也可以放置到request和session、 applicatio中,这要根据实际应用来做决定,一般只是在页面中使用的化,使用
孙亖
2018/06/07
7.3K0
PHP中的short_open_tag
short_open_tag 是什么呢? 决定是否允许使用代码开始标志的缩写形式(<? ?> )。如果要和 XML 结合使用 PHP,可以禁用此选项以便于嵌入使用<?xml ?> 。否则还可以通过ph
用户7657330
2020/08/14
4520
TypeScript 中的变量声明:变量声明的语法、变量的作用域、变量的类型推断和类型断言
TypeScript 是一种由微软开发的静态类型编程语言,它是 JavaScript 的超集,并且可以在编译时进行类型检查。在 TypeScript 中,变量声明是非常重要的一个概念,它定义了变量的名称和类型。通过正确地声明变量,我们可以增强代码的可读性、可维护性和可扩展性。本文将详细介绍 TypeScript 中的变量声明,包括变量声明的语法、变量的作用域、变量的类型推断和类型断言等内容。
网络技术联盟站
2023/07/06
8410
__asm__ volatile 之 C语言嵌入式汇编
或者: para = 0x04 movl $para, %ebx 指令执行的结果是将立即数04h装入寄存器ebx。
用户1147447
2019/05/26
12.7K0
点击加载更多

相似问题

Intel ASM加入EAX

12

__asm{};返回eax的值吗?

22

未知变量被移动到EAX寄存器中

12

ASM空间优化: EAX与EBX

12

在VS2010中使用asm中的选择器

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文