题目如图
代码主体
.text
.globl _gcd
_gcd:
mov r0, #9
mov r1, #15
loop:
cmp r0,r1
beq stop
subgt r0,r0,r1
bgt loop
sub r1,r1,r0
b loop
stop:
b stop
.end
map.lds文件的修改
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
OUTPUT_ARCH(arm)
ENTRY(_gcd)
SECTIONS
{
. = 0x00000000;
. = ALIGN(4);
.text :
{
./Objects/gcd.o(.text)
*(.text)
}
. = ALIGN(4);
.rodata :
{ *(.rodata) }
. = ALIGN(4);
.data :
{ *(.data) }
. = ALIGN(4);
__bss_start = .;
.bss :
{ *(.bss) }
__bss_end__ = .;
}
效果
第一轮
第二轮
第三轮(结束)
用汇编实现for循环实现1~100相加
代码
.text
.globl _start
_start:
mov r0, #0
mov r1, #1
loop:
add r0,r0,r1
add r1,r1,#1
cmp r1,#101
beq stop
b loop
stop:
b stop
.end
效果(最终结果为0x13BA即5050)