初识汇编(二)

2018-04-26  本文已影响0人  请叫我大帅666

数据的宽度

数学上的数字没有限制, 可以无穷大. 但在计算机中, 由于受硬件的制约,数据都是有长度限制的(我们成为数据宽度), 超过最多宽度的数据会被丢弃.

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int test(){
    int cTemp = 0x1FFFFFFFF;
    return cTemp;
}

int main(int argc, char * argv[]) {
    printf("%x\n",test());
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

计算机中常见的数据宽度

那么计算机存储数据它会分为有符号和无符号数, 看下图就理解了:

Snip20180426_49.png
无符号数,直接换算!
有符号数:
正数:  0    1    2    3    4    5    6    7 
负数:  F    E    D    B    C    A    9    8
      -1   -2   -3   -4   -5   -6   -7   -8

寄存器

内部部件之间由总线相连

Snip20180426_50.png

通用寄存器

Snip20180426_51.png

pc寄存器(program counter)

09_35_55__04_26_2018.jpg

bl指令

注意: mov指令不能用于设置pc的值, ARM64没有提供这样的功能

bl指令--练习

假设程序先执行A,请写出指令执行顺序 和 最终寄存器x0的值

_A:
    mov x0,#0xa0
    mov x1,#0x00
    add x1, x0, #0x14
    mov x0,x1
    bl _B
    mov x0,#0x0
    ret

_B:
    add x0, x0, #0x10
    ret

第二篇初识汇编的复习和梳理就到这了.

上一篇下一篇

猜你喜欢

热点阅读