欢迎来到皮皮网网首页

【c 线程 源码】【种树系统源码】【spark rdd 源码】0ffh的源码_源代码0和1

来源:php源码短视频 时间:2024-11-06 11:33:34

1.汇编语言如何判断是源码源代c 线程 源码有符号运算,还是无符号运算?

0ffh的源码_源代码0和1

汇编语言如何判断是有符号运算,还是无符号运算?

       对于加法和减法,有符号和无符号的指令是通用的,所以只能通过源码或者是其他的标记来判断是有符号还是无符号

       比如如果一个变量是这样定义的话:

       a db -1

       那如果有add或者sub引用了这个变量的话,那这个就有可能是有符号的运算了,由于有的人习惯将0FFH或其他的所有二进制位全都为1的数定义成-1,所以不能确定,但如果是其他的负数的话,那么这个数是有符号数的概率就大多了.如果是个值为正数的有符号数的话,那就只能通过上下文来判断了

       最精确的方法还是看进行加减运算前后的指令,比如:

       mov ax,a

       mov bx,b

       sub a,b

       js XXXX

       用到的是和有符号数对应的条件转移指令的话,那这个就肯定是有符号的运算了

       当然这只是其中的一种方法,具体的判断方法还要看具体的代码,这个一般不会出现太大的歧义,因为如果算法确定了的话,那么这个算法使用的变量的类型一般也就确定了.所以只要你能读懂代码,那这个运算的类型你也肯定能看出来

       对于乘法和除法就简单了,直接从指令就能看出来,无符号的乘除是MUL和DIV,有符号的是IMUL和IDIV

       浮点数的话全都是有符号数,没有无符号的