随笔分类 -  AS

GNU Linux AS ARM
摘要:都是串操作,执行完后根据DF标志自动改变间址寄存器的值,使其指向内存中的下一数据,以便重复操作。指令后面加B表示字节操作,加W表示字操作,加D表示双字操作,例如MOVSB、MOVSW、MOVSD,也可以用类型加PTR修饰,例如MOVS DWORD PTR es:[di], DWORD PTR ds:[si]。MOVS是把ds:si指向的内存数据传送到es:di指向的内存里面;LODS是把ds:si指向的内存数据传送到al/ax/eax里面;CMPS是把ds:si指向的内存数据与es:di指向的内存数据进行比较,只影响标志位,不改变数据;SCAS是把al/ax/eax与es:di指向的内存数据进 阅读全文
posted @ 2012-12-02 16:35 js_gary 阅读(1416) 评论(0) 推荐(0)
摘要:.align 就是用来对齐的,究竟怎么对齐,有啥情况?下面分析一下(一)$vim align1.s在新建的文件编辑以下代码:_start: b reset .byte 0x55 .byte 0xaareset: ldr r0, =0x53000000保存后,执行如下命令:$arm-linux-as align1.s -o align1.o这样的话有的编译器可能会报错,但我的编译器没有报错,虽然没有报错,但反汇编的结果显示,运行时肯定会出问题。执行如下命令:$arm-linux-objdump -d align1.o显示如下:00000000 : 0: ea000000b4 4: 045... 阅读全文
posted @ 2012-11-21 15:16 js_gary 阅读(1713) 评论(0) 推荐(0)