在程序集中正确存储8字节值

时间:2019-04-16 17:18:00

标签: c assembly hex ascii

我有特定的说明将%8x的8位十六进制值存储在%rax寄存器中。

所以8字节意味着64位。.所以我的第一种方法是使用movq命令..但是我无法确定如何正确格式化命令。

/ bin / sh以十六进制表示是:2f 62 69 6e 2f 73 68 只需7个字节即可。.是否需要某种空终止符或填充以正确地编写命令?

  # Write the 8-byte hex value for "/bin/sh" to %rax register
  movq $0x68732f6e69622f, %rax

最终该命令将被系统调用使用

谢谢!

1 个答案:

答案 0 :(得分:0)

寄存器是特定大小的,因此无论您做什么,它都占用64位。有效地将高位零填充。将$0x1移到最低值的一位,其余的零。

您不会“无效终止”这些值,否则会导致将某些事物乘以任意因素。 $0x1000$0x0001显然不同。