assembly - 如何在 nasm 程序集中的函数中索引数组?
问题描述
根据问题,如何在函数内部的 nasm 程序集中索引数组?每当我编译我的代码时,我总是得到错误无效的有效地址,并且根据我所做的搜索,它与我在索引时使用的寄存器有关。即便如此,鉴于汇编的不同架构,我仍然不确定要使用哪些寄存器。
get_largest:
mov rcx, 5
mov bl, 0
mov al, 0
neg_loop:
cmp rcx, 0
je check_neg
cmp dword[rdi+al*2], 0
jl incbl
inc al
jmp neg_loop
incbl:
inc al
inc bl
jmp neg_loop
check_neg:
cmp bl, 5
jl check_largest
mov rsi, 1
mov rdx, -1
jmp return
check_largest:
mov rsi, 0
mov rcx, 5
mov al, 0
mov bl, 0
large:
cmp rcx, 0
je greatest
cmp dword[rdi+al*2], bl
jg larger
inc al
jmp large
larger:
mov bl, dword[rdi+al*2]
inc al
jmp large
greatest:
mov rdi, bl
return:
ret
这是我的函数,编译错误发生在cmp dword[rdi+al*2], 0
解决方案
推荐阅读
- c# - 如何根据 2 小时设置计时器?
- python - 如何更改 django 模板中变量的值?
- go - golang 中的 php $_REQUEST 相当于什么?
- php - 如何在 coinbase api 中请求资金?
- c# - 在 Unity 中获取连接在同一网络上的所有设备的 IP 地址?
- c++ - 用作默认参数的未优化 constexpr 的未定义引用
- unity3d - LeapMotion unity 4.0 是否还支持检测工具,比如铅笔?
- android - 设置颜色过滤器不适用于自定义颜色
- javascript - Bootstrap 卡中的响应式 PlotlyJS 图表
- scala - Scala 隐式类(在隐式类中使用隐式) - 不是 Int 错误的成员