如何从 main() 中 return 大于 8 位的数字?
How to return a number larger than 8 bits from main()?
据我所知,从 r0
编辑的退出代码 return 仅使用该寄存器的最低 8 位。我如何 return 一个高于 8 位的值?
这是 ARMv7 代码:
@ looping.s
@ calculates sum of integers from 1 to 100
.text
.balign 4
.global main
main:
MOV r1, #0 @ r1 = 0 as sum
MOV r2, #0 @ r2 = 0 as counter
loop:
ADD r2, r2, #1 @ counter = counter + 1
ADD r1, r1, r2 @ sum = sum + counter
CMP r2, #100 @ counter - 100
BLT loop @ if counter < 100 go to start of loop
MOV r0, r1 @ Store sum in r0
BX lr @ Return summation result to OS
进程的退出状态大小为 8 位。无法通过正常方式 return 更大的退出状态。如果你想输出一个大于 255 的数字,你可以使用 write
系统调用将它打印到标准输出(文件描述符 1)。
您不应该使用 main()
函数来执行计算。一般来说,函数不限于8位return值,所以给你的实际函数一个不同的名字,return在R0中一个更大的整数。从 main()
内部调用你的函数,然后对 return 值做任何你需要做的事情,也许将它打印到控制台。
据我所知,从 r0
编辑的退出代码 return 仅使用该寄存器的最低 8 位。我如何 return 一个高于 8 位的值?
这是 ARMv7 代码:
@ looping.s
@ calculates sum of integers from 1 to 100
.text
.balign 4
.global main
main:
MOV r1, #0 @ r1 = 0 as sum
MOV r2, #0 @ r2 = 0 as counter
loop:
ADD r2, r2, #1 @ counter = counter + 1
ADD r1, r1, r2 @ sum = sum + counter
CMP r2, #100 @ counter - 100
BLT loop @ if counter < 100 go to start of loop
MOV r0, r1 @ Store sum in r0
BX lr @ Return summation result to OS
进程的退出状态大小为 8 位。无法通过正常方式 return 更大的退出状态。如果你想输出一个大于 255 的数字,你可以使用 write
系统调用将它打印到标准输出(文件描述符 1)。
您不应该使用 main()
函数来执行计算。一般来说,函数不限于8位return值,所以给你的实际函数一个不同的名字,return在R0中一个更大的整数。从 main()
内部调用你的函数,然后对 return 值做任何你需要做的事情,也许将它打印到控制台。