ronin-asm 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +4 -0
- data/.gemtest +0 -0
- data/.gitignore +11 -0
- data/.rspec +1 -0
- data/.yardopts +1 -0
- data/COPYING.txt +674 -0
- data/ChangeLog.md +10 -0
- data/Gemfile +19 -0
- data/README.md +142 -0
- data/Rakefile +44 -0
- data/data/ronin/asm/freebsd/amd64/syscalls.yml +415 -0
- data/data/ronin/asm/freebsd/x86/syscalls.yml +415 -0
- data/data/ronin/asm/linux/amd64/syscalls.yml +306 -0
- data/data/ronin/asm/linux/x86/syscalls.yml +339 -0
- data/data/ronin/gen/asm/source_file.s.erb +4 -0
- data/gemspec.yml +20 -0
- data/lib/ronin/asm.rb +25 -0
- data/lib/ronin/asm/archs.rb +23 -0
- data/lib/ronin/asm/archs/amd64.rb +99 -0
- data/lib/ronin/asm/archs/x86.rb +166 -0
- data/lib/ronin/asm/asm.rb +66 -0
- data/lib/ronin/asm/config.rb +39 -0
- data/lib/ronin/asm/immediate_operand.rb +76 -0
- data/lib/ronin/asm/instruction.rb +65 -0
- data/lib/ronin/asm/memory_operand.rb +109 -0
- data/lib/ronin/asm/os.rb +24 -0
- data/lib/ronin/asm/os/freebsd.rb +34 -0
- data/lib/ronin/asm/os/linux.rb +34 -0
- data/lib/ronin/asm/os/os.rb +40 -0
- data/lib/ronin/asm/program.rb +476 -0
- data/lib/ronin/asm/register.rb +110 -0
- data/lib/ronin/asm/shellcode.rb +70 -0
- data/lib/ronin/asm/syntax.rb +23 -0
- data/lib/ronin/asm/syntax/att.rb +136 -0
- data/lib/ronin/asm/syntax/common.rb +202 -0
- data/lib/ronin/asm/syntax/intel.rb +150 -0
- data/lib/ronin/asm/version.rb +27 -0
- data/ronin-asm.gemspec +61 -0
- data/spec/asm_spec.rb +8 -0
- data/spec/helpers/database.rb +7 -0
- data/spec/immediate_operand_spec.rb +77 -0
- data/spec/instruction_spec.rb +62 -0
- data/spec/memory_operand_spec.rb +80 -0
- data/spec/program_spec.rb +365 -0
- data/spec/register_spec.rb +110 -0
- data/spec/shellcode_spec.rb +34 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/syntax/att_spec.rb +171 -0
- data/spec/syntax/common_spec.rb +42 -0
- data/spec/syntax/intel_spec.rb +156 -0
- metadata +163 -0
@@ -0,0 +1,339 @@
|
|
1
|
+
---
|
2
|
+
:restart_syscall: 0
|
3
|
+
:exit: 1
|
4
|
+
:fork: 2
|
5
|
+
:read: 3
|
6
|
+
:write: 4
|
7
|
+
:open: 5
|
8
|
+
:close: 6
|
9
|
+
:waitpid: 7
|
10
|
+
:creat: 8
|
11
|
+
:link: 9
|
12
|
+
:unlink: 10
|
13
|
+
:execve: 11
|
14
|
+
:chdir: 12
|
15
|
+
:time: 13
|
16
|
+
:mknod: 14
|
17
|
+
:chmod: 15
|
18
|
+
:lchown: 16
|
19
|
+
:break: 17
|
20
|
+
:oldstat: 18
|
21
|
+
:lseek: 19
|
22
|
+
:getpid: 20
|
23
|
+
:mount: 21
|
24
|
+
:umount: 22
|
25
|
+
:setuid: 23
|
26
|
+
:getuid: 24
|
27
|
+
:stime: 25
|
28
|
+
:ptrace: 26
|
29
|
+
:alarm: 27
|
30
|
+
:oldfstat: 28
|
31
|
+
:pause: 29
|
32
|
+
:utime: 30
|
33
|
+
:stty: 31
|
34
|
+
:gtty: 32
|
35
|
+
:access: 33
|
36
|
+
:nice: 34
|
37
|
+
:ftime: 35
|
38
|
+
:sync: 36
|
39
|
+
:kill: 37
|
40
|
+
:rename: 38
|
41
|
+
:mkdir: 39
|
42
|
+
:rmdir: 40
|
43
|
+
:dup: 41
|
44
|
+
:pipe: 42
|
45
|
+
:times: 43
|
46
|
+
:prof: 44
|
47
|
+
:brk: 45
|
48
|
+
:setgid: 46
|
49
|
+
:getgid: 47
|
50
|
+
:signal: 48
|
51
|
+
:geteuid: 49
|
52
|
+
:getegid: 50
|
53
|
+
:acct: 51
|
54
|
+
:umount2: 52
|
55
|
+
:lock: 53
|
56
|
+
:ioctl: 54
|
57
|
+
:fcntl: 55
|
58
|
+
:mpx: 56
|
59
|
+
:setpgid: 57
|
60
|
+
:ulimit: 58
|
61
|
+
:oldolduname: 59
|
62
|
+
:umask: 60
|
63
|
+
:chroot: 61
|
64
|
+
:ustat: 62
|
65
|
+
:dup2: 63
|
66
|
+
:getppid: 64
|
67
|
+
:getpgrp: 65
|
68
|
+
:setsid: 66
|
69
|
+
:sigaction: 67
|
70
|
+
:sgetmask: 68
|
71
|
+
:ssetmask: 69
|
72
|
+
:setreuid: 70
|
73
|
+
:setregid: 71
|
74
|
+
:sigsuspend: 72
|
75
|
+
:sigpending: 73
|
76
|
+
:sethostname: 74
|
77
|
+
:setrlimit: 75
|
78
|
+
:getrlimit: 76 # Back compatible 2Gig limited rlimit
|
79
|
+
:getrusage: 77
|
80
|
+
:gettimeofday: 78
|
81
|
+
:settimeofday: 79
|
82
|
+
:getgroups: 80
|
83
|
+
:setgroups: 81
|
84
|
+
:select: 82
|
85
|
+
:symlink: 83
|
86
|
+
:oldlstat: 84
|
87
|
+
:readlink: 85
|
88
|
+
:uselib: 86
|
89
|
+
:swapon: 87
|
90
|
+
:reboot: 88
|
91
|
+
:readdir: 89
|
92
|
+
:mmap: 90
|
93
|
+
:munmap: 91
|
94
|
+
:truncate: 92
|
95
|
+
:ftruncate: 93
|
96
|
+
:fchmod: 94
|
97
|
+
:fchown: 95
|
98
|
+
:getpriority: 96
|
99
|
+
:setpriority: 97
|
100
|
+
:profil: 98
|
101
|
+
:statfs: 99
|
102
|
+
:fstatfs: 100
|
103
|
+
:ioperm: 101
|
104
|
+
:socketcall: 102
|
105
|
+
:syslog: 103
|
106
|
+
:setitimer: 104
|
107
|
+
:getitimer: 105
|
108
|
+
:stat: 106
|
109
|
+
:lstat: 107
|
110
|
+
:fstat: 108
|
111
|
+
:olduname: 109
|
112
|
+
:iopl: 110
|
113
|
+
:vhangup: 111
|
114
|
+
:idle: 112
|
115
|
+
:vm86old: 113
|
116
|
+
:wait4: 114
|
117
|
+
:swapoff: 115
|
118
|
+
:sysinfo: 116
|
119
|
+
:ipc: 117
|
120
|
+
:fsync: 118
|
121
|
+
:sigreturn: 119
|
122
|
+
:clone: 120
|
123
|
+
:setdomainname: 121
|
124
|
+
:uname: 122
|
125
|
+
:modify_ldt: 123
|
126
|
+
:adjtimex: 124
|
127
|
+
:mprotect: 125
|
128
|
+
:sigprocmask: 126
|
129
|
+
:create_module: 127
|
130
|
+
:init_module: 128
|
131
|
+
:delete_module: 129
|
132
|
+
:get_kernel_syms: 130
|
133
|
+
:quotactl: 131
|
134
|
+
:getpgid: 132
|
135
|
+
:fchdir: 133
|
136
|
+
:bdflush: 134
|
137
|
+
:sysfs: 135
|
138
|
+
:personality: 136
|
139
|
+
:afs_syscall: 137 # Syscall for Andrew File System
|
140
|
+
:setfsuid: 138
|
141
|
+
:setfsgid: 139
|
142
|
+
:_llseek: 140
|
143
|
+
:getdents: 141
|
144
|
+
:_newselect: 142
|
145
|
+
:flock: 143
|
146
|
+
:msync: 144
|
147
|
+
:readv: 145
|
148
|
+
:writev: 146
|
149
|
+
:getsid: 147
|
150
|
+
:fdatasync: 148
|
151
|
+
:_sysctl: 149
|
152
|
+
:mlock: 150
|
153
|
+
:munlock: 151
|
154
|
+
:mlockall: 152
|
155
|
+
:munlockall: 153
|
156
|
+
:sched_setparam: 154
|
157
|
+
:sched_getparam: 155
|
158
|
+
:sched_setscheduler: 156
|
159
|
+
:sched_getscheduler: 157
|
160
|
+
:sched_yield: 158
|
161
|
+
:sched_get_priority_max: 159
|
162
|
+
:sched_get_priority_min: 160
|
163
|
+
:sched_rr_get_interval: 161
|
164
|
+
:nanosleep: 162
|
165
|
+
:mremap: 163
|
166
|
+
:setresuid: 164
|
167
|
+
:getresuid: 165
|
168
|
+
:vm86: 166
|
169
|
+
:query_module: 167
|
170
|
+
:poll: 168
|
171
|
+
:nfsservctl: 169
|
172
|
+
:setresgid: 170
|
173
|
+
:getresgid: 171
|
174
|
+
:prctl: 172
|
175
|
+
:rt_sigreturn: 173
|
176
|
+
:rt_sigaction: 174
|
177
|
+
:rt_sigprocmask: 175
|
178
|
+
:rt_sigpending: 176
|
179
|
+
:rt_sigtimedwait: 177
|
180
|
+
:rt_sigqueueinfo: 178
|
181
|
+
:rt_sigsuspend: 179
|
182
|
+
:pread64: 180
|
183
|
+
:pwrite64: 181
|
184
|
+
:chown: 182
|
185
|
+
:getcwd: 183
|
186
|
+
:capget: 184
|
187
|
+
:capset: 185
|
188
|
+
:sigaltstack: 186
|
189
|
+
:sendfile: 187
|
190
|
+
:getpmsg: 188 # some people actually want streams
|
191
|
+
:putpmsg: 189 # some people actually want streams
|
192
|
+
:vfork: 190
|
193
|
+
:ugetrlimit: 191 # SuS compliant getrlimit
|
194
|
+
:mmap2: 192
|
195
|
+
:truncate64: 193
|
196
|
+
:ftruncate64: 194
|
197
|
+
:stat64: 195
|
198
|
+
:lstat64: 196
|
199
|
+
:fstat64: 197
|
200
|
+
:lchown32: 198
|
201
|
+
:getuid32: 199
|
202
|
+
:getgid32: 200
|
203
|
+
:geteuid32: 201
|
204
|
+
:getegid32: 202
|
205
|
+
:setreuid32: 203
|
206
|
+
:setregid32: 204
|
207
|
+
:getgroups32: 205
|
208
|
+
:setgroups32: 206
|
209
|
+
:fchown32: 207
|
210
|
+
:setresuid32: 208
|
211
|
+
:getresuid32: 209
|
212
|
+
:setresgid32: 210
|
213
|
+
:getresgid32: 211
|
214
|
+
:chown32: 212
|
215
|
+
:setuid32: 213
|
216
|
+
:setgid32: 214
|
217
|
+
:setfsuid32: 215
|
218
|
+
:setfsgid32: 216
|
219
|
+
:pivot_root: 217
|
220
|
+
:mincore: 218
|
221
|
+
:madvise: 219
|
222
|
+
:madvise1: 219 # delete when C lib stub is removed
|
223
|
+
:getdents64: 220
|
224
|
+
:fcntl64: 221
|
225
|
+
# 223 is unused
|
226
|
+
:gettid: 224
|
227
|
+
:readahead: 225
|
228
|
+
:setxattr: 226
|
229
|
+
:lsetxattr: 227
|
230
|
+
:fsetxattr: 228
|
231
|
+
:getxattr: 229
|
232
|
+
:lgetxattr: 230
|
233
|
+
:fgetxattr: 231
|
234
|
+
:listxattr: 232
|
235
|
+
:llistxattr: 233
|
236
|
+
:flistxattr: 234
|
237
|
+
:removexattr: 235
|
238
|
+
:lremovexattr: 236
|
239
|
+
:fremovexattr: 237
|
240
|
+
:tkill: 238
|
241
|
+
:sendfile64: 239
|
242
|
+
:futex: 240
|
243
|
+
:sched_setaffinity: 241
|
244
|
+
:sched_getaffinity: 242
|
245
|
+
:set_thread_area: 243
|
246
|
+
:get_thread_area: 244
|
247
|
+
:io_setup: 245
|
248
|
+
:io_destroy: 246
|
249
|
+
:io_getevents: 247
|
250
|
+
:io_submit: 248
|
251
|
+
:io_cancel: 249
|
252
|
+
:fadvise64: 250
|
253
|
+
# 251 is available for reuse (was briefly sys_set_zone_reclaim)
|
254
|
+
:exit_group: 252
|
255
|
+
:lookup_dcookie: 253
|
256
|
+
:epoll_create: 254
|
257
|
+
:epoll_ctl: 255
|
258
|
+
:epoll_wait: 256
|
259
|
+
:remap_file_pages: 257
|
260
|
+
:set_tid_address: 258
|
261
|
+
:timer_create: 259
|
262
|
+
:timer_settime: 260 # (timer_create+1)
|
263
|
+
:timer_gettime: 261 # (timer_create+2)
|
264
|
+
:timer_getoverrun: 262 # (timer_create+3)
|
265
|
+
:timer_delete: 263 # (timer_create+4)
|
266
|
+
:clock_settime: 264 # (timer_create+5)
|
267
|
+
:clock_gettime: 265 # (timer_create+6)
|
268
|
+
:clock_getres: 266 # (timer_create+7)
|
269
|
+
:clock_nanosleep: 267 # (timer_create+8)
|
270
|
+
:statfs64: 268
|
271
|
+
:fstatfs64: 269
|
272
|
+
:tgkill: 270
|
273
|
+
:utimes: 271
|
274
|
+
:fadvise64_64: 272
|
275
|
+
:vserver: 273
|
276
|
+
:mbind: 274
|
277
|
+
:get_mempolicy: 275
|
278
|
+
:set_mempolicy: 276
|
279
|
+
:mq_open: 277
|
280
|
+
:mq_unlink: 278 # (mq_open+1)
|
281
|
+
:mq_timedsend: 279 # (mq_open+2)
|
282
|
+
:mq_timedreceive: 280 # (mq_open+3)
|
283
|
+
:mq_notify: 281 # (mq_open+4)
|
284
|
+
:mq_getsetattr: 282 # (mq_open+5)
|
285
|
+
:kexec_load: 283
|
286
|
+
:waitid: 284
|
287
|
+
# sys_setaltroot: 285
|
288
|
+
:add_key: 286
|
289
|
+
:request_key: 287
|
290
|
+
:keyctl: 288
|
291
|
+
:ioprio_set: 289
|
292
|
+
:ioprio_get: 290
|
293
|
+
:inotify_init: 291
|
294
|
+
:inotify_add_watch: 292
|
295
|
+
:inotify_rm_watch: 293
|
296
|
+
:migrate_pages: 294
|
297
|
+
:openat: 295
|
298
|
+
:mkdirat: 296
|
299
|
+
:mknodat: 297
|
300
|
+
:fchownat: 298
|
301
|
+
:futimesat: 299
|
302
|
+
:fstatat64: 300
|
303
|
+
:unlinkat: 301
|
304
|
+
:renameat: 302
|
305
|
+
:linkat: 303
|
306
|
+
:symlinkat: 304
|
307
|
+
:readlinkat: 305
|
308
|
+
:fchmodat: 306
|
309
|
+
:faccessat: 307
|
310
|
+
:pselect6: 308
|
311
|
+
:ppoll: 309
|
312
|
+
:unshare: 310
|
313
|
+
:set_robust_list: 311
|
314
|
+
:get_robust_list: 312
|
315
|
+
:splice: 313
|
316
|
+
:sync_file_range: 314
|
317
|
+
:tee: 315
|
318
|
+
:vmsplice: 316
|
319
|
+
:move_pages: 317
|
320
|
+
:getcpu: 318
|
321
|
+
:epoll_pwait: 319
|
322
|
+
:utimensat: 320
|
323
|
+
:signalfd: 321
|
324
|
+
:timerfd_create: 322
|
325
|
+
:eventfd: 323
|
326
|
+
:fallocate: 324
|
327
|
+
:timerfd_settime: 325
|
328
|
+
:timerfd_gettime: 326
|
329
|
+
:signalfd4: 327
|
330
|
+
:eventfd2: 328
|
331
|
+
:epoll_create1: 329
|
332
|
+
:dup3: 330
|
333
|
+
:pipe2: 331
|
334
|
+
:inotify_init1: 332
|
335
|
+
:preadv: 333
|
336
|
+
:pwritev: 334
|
337
|
+
:rt_tgsigqueueinfo: 335
|
338
|
+
:perf_event_open: 336
|
339
|
+
:recvmmsg: 337
|
data/gemspec.yml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
name: ronin-asm
|
2
|
+
summary: A Ruby DSL for crafting Assembly programs and Shellcode.
|
3
|
+
description:
|
4
|
+
ronin-asm is a Ruby DSL for crafting Assmebly programs and Shellcode.
|
5
|
+
|
6
|
+
license: GPL-3
|
7
|
+
authors: Postmodern
|
8
|
+
email: postmodern.mod3@gmail.com
|
9
|
+
homepage: https://github.com/ronin-ruby/ronin-asm#readme
|
10
|
+
has_yard: true
|
11
|
+
|
12
|
+
requirements: yasm >= 0.6.0
|
13
|
+
|
14
|
+
dependencies:
|
15
|
+
data_paths: ~> 0.3
|
16
|
+
ruby-yasm: ~> 0.2
|
17
|
+
|
18
|
+
development_dependencies:
|
19
|
+
bundler: ~> 1.0
|
20
|
+
yard: ~> 0.7
|
data/lib/ronin/asm.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#
|
2
|
+
# Ronin ASM - A Ruby DSL for crafting Assembly programs and Shellcode.
|
3
|
+
#
|
4
|
+
# Copyright (c) 2007-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
|
5
|
+
#
|
6
|
+
# This file is part of Ronin ASM.
|
7
|
+
#
|
8
|
+
# Ronin Asm is free software: you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation, either version 3 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# Ronin Asm is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with Ronin Asm. If not, see <http://www.gnu.org/licenses/>.
|
20
|
+
#
|
21
|
+
|
22
|
+
require 'ronin/asm/program'
|
23
|
+
require 'ronin/asm/shellcode'
|
24
|
+
require 'ronin/asm/asm'
|
25
|
+
require 'ronin/asm/version'
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#
|
2
|
+
# Ronin ASM - A Ruby DSL for crafting Assembly programs and Shellcode.
|
3
|
+
#
|
4
|
+
# Copyright (c) 2007-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
|
5
|
+
#
|
6
|
+
# This file is part of Ronin ASM.
|
7
|
+
#
|
8
|
+
# Ronin is free software: you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation, either version 3 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# Ronin is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with Ronin. If not, see <http://www.gnu.org/licenses/>
|
20
|
+
#
|
21
|
+
|
22
|
+
require 'ronin/asm/archs/x86'
|
23
|
+
require 'ronin/asm/archs/amd64'
|
@@ -0,0 +1,99 @@
|
|
1
|
+
#
|
2
|
+
# Ronin ASM - A Ruby DSL for crafting Assembly programs and Shellcode.
|
3
|
+
#
|
4
|
+
# Copyright (c) 2007-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
|
5
|
+
#
|
6
|
+
# This file is part of Ronin ASM.
|
7
|
+
#
|
8
|
+
# Ronin is free software: you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation, either version 3 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# Ronin is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with Ronin. If not, see <http://www.gnu.org/licenses/>
|
20
|
+
#
|
21
|
+
|
22
|
+
require 'ronin/asm/archs/x86'
|
23
|
+
|
24
|
+
module Ronin
|
25
|
+
module ASM
|
26
|
+
module Archs
|
27
|
+
#
|
28
|
+
# Contains AMD64 Archtecture information.
|
29
|
+
#
|
30
|
+
module AMD64
|
31
|
+
include X86
|
32
|
+
|
33
|
+
# Default word size
|
34
|
+
WORD_SIZE = 8
|
35
|
+
|
36
|
+
# AMD64 registers
|
37
|
+
REGISTERS = X86::REGISTERS.merge(
|
38
|
+
:rax => Register.new(:rax, 8, true),
|
39
|
+
:rbx => Register.new(:rbx, 8, true),
|
40
|
+
:rcx => Register.new(:rcx, 8, true),
|
41
|
+
:rdx => Register.new(:rdx, 8, true),
|
42
|
+
|
43
|
+
:rsi => Register.new(:rsi, 8, true),
|
44
|
+
:rdi => Register.new(:rdi, 8, true),
|
45
|
+
|
46
|
+
:rsp => Register.new(:rsp, 8, true),
|
47
|
+
:rbp => Register.new(:rbp, 8, true),
|
48
|
+
|
49
|
+
:r8b => Register.new(:r8b, 1, true),
|
50
|
+
:r8w => Register.new(:r8w, 2, true),
|
51
|
+
:r8d => Register.new(:r8d, 4, true),
|
52
|
+
:r8 => Register.new(:r8, 8, true),
|
53
|
+
|
54
|
+
:r9b => Register.new(:r9b, 1, true),
|
55
|
+
:r9w => Register.new(:r9w, 2, true),
|
56
|
+
:r9d => Register.new(:r9d, 4, true),
|
57
|
+
:r9 => Register.new(:r9, 8, true),
|
58
|
+
|
59
|
+
:r10b => Register.new(:r10b, 1, true),
|
60
|
+
:r10w => Register.new(:r10w, 2, true),
|
61
|
+
:r10d => Register.new(:r10d, 4, true),
|
62
|
+
:r10 => Register.new(:r10, 8, true),
|
63
|
+
|
64
|
+
:r11b => Register.new(:r11b, 1, true),
|
65
|
+
:r11w => Register.new(:r11w, 2, true),
|
66
|
+
:r11d => Register.new(:r11d, 4, true),
|
67
|
+
:r11 => Register.new(:r11, 8, true),
|
68
|
+
|
69
|
+
:r12b => Register.new(:r12b, 1, true),
|
70
|
+
:r12w => Register.new(:r12w, 2, true),
|
71
|
+
:r12d => Register.new(:r12d, 4, true),
|
72
|
+
:r12 => Register.new(:r12, 8, true),
|
73
|
+
|
74
|
+
:r13b => Register.new(:r13b, 1, true),
|
75
|
+
:r13w => Register.new(:r13w, 2, true),
|
76
|
+
:r13d => Register.new(:r13d, 4, true),
|
77
|
+
:r13 => Register.new(:r13, 8, true),
|
78
|
+
|
79
|
+
:r14b => Register.new(:r14b, 1, true),
|
80
|
+
:r14w => Register.new(:r14w, 2, true),
|
81
|
+
:r14d => Register.new(:r14d, 4, true),
|
82
|
+
:r14 => Register.new(:r14, 8, true),
|
83
|
+
|
84
|
+
:r15b => Register.new(:r15b, 1, true),
|
85
|
+
:r15w => Register.new(:r15w, 2, true),
|
86
|
+
:r15d => Register.new(:r15d, 4, true),
|
87
|
+
:r15 => Register.new(:r15, 8, true),
|
88
|
+
|
89
|
+
:rip => Register.new(:rip, 8, true)
|
90
|
+
)
|
91
|
+
|
92
|
+
#
|
93
|
+
# Generates the instruction to invoke a syscall.
|
94
|
+
#
|
95
|
+
def syscall; instruction(:syscall); end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|