小编Rio*_*lku的帖子

Typescript:类型“Number”不能用作索引类型

在 TypeScript 中,我有一个数组,我将其用作映射来访问另一个对象数组。这是我的代码的一个极其简化的示例:

var mp : Number[] = [1, 2, 0];
var arr : any[] = ['a', 4, /regex/];

console.log(arr[mp[2]])
Run Code Online (Sandbox Code Playgroud)

然而,运行这个会产生:

error TS2538: Type 'Number' cannot be used as an index type.
Run Code Online (Sandbox Code Playgroud)

我在其他地方查看过,但此类错误的其他答案并不涉及像数组和Number. 如果不是Number对象,如何索引数组?

arrays types typescript

10
推荐指数
1
解决办法
2万
查看次数

为什么eax包含向量参数的数量?

为什么al包含汇编中的矢量参数数量?

为什么向量参数与被调用者的正常参数有任何不同?

assembly x86-64 abi calling-convention sysv

3
推荐指数
1
解决办法
183
查看次数

未知类型的变量argad

使用stdarg.h,我只能拉一种类型,因为我必须知道我正在检索的类型.那么,printf如何设法成为任何类型的可变函数,在C中不会少?

c calling-convention

3
推荐指数
1
解决办法
59
查看次数

调用“ret”与调用 sys_exit 编号程序集 gcc 有什么区别

在 gcc 汇编中,main 函数可以返回或退出,两者都起作用。这里我有两个程序,其中一个通过 syscall 退出int $0x80,另一个只是调用 ret。有什么不同?

.data
hello: .string "Hello, World!"
.globl main
main:
  push %rbx
  movq $hello, %rdi
  call puts
  pop %rbx

  ret
Run Code Online (Sandbox Code Playgroud)

.data
hello: .string "Hello, World!"
.globl main
main:
  push %rbx
  movq $hello, %rdi
  call puts
  pop %rbx

  movq $1, %rax
  movq $0, %rbx
  int $0x80
Run Code Online (Sandbox Code Playgroud)

我知道 ret 将指令指针从堆栈中弹出,但是在这种情况下它到底有什么作用呢?

assembly

1
推荐指数
1
解决办法
987
查看次数

为什么编译器会保留一点堆栈空间而不是整个数组大小?

以下代码

int main() {
  int arr[120];
  return arr[0];
}
Run Code Online (Sandbox Code Playgroud)

编译成这样:

  sub     rsp, 360
  mov     eax, DWORD PTR [rsp-480]
  add     rsp, 360
  ret
Run Code Online (Sandbox Code Playgroud)

知道整数是 4 个字节,数组的大小为 120,数组应该占用 480 个字节,但从 ESP 中只减去了 360 个字节......这是为什么?

assembly x86-64 red-zone

1
推荐指数
1
解决办法
384
查看次数

标签 统计

assembly ×3

calling-convention ×2

x86-64 ×2

abi ×1

arrays ×1

c ×1

red-zone ×1

sysv ×1

types ×1

typescript ×1